首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用magrittr::inset()?

如何使用magrittr::inset()?
EN

Stack Overflow用户
提问于 2015-08-20 16:56:08
回答 1查看 1.2K关注 0票数 8

我理解magrittr::inset()应该能够将向量分配给dataframe中的新列(作为extract()的一种对立面)。但我不明白语法应该如何工作。

举个玩具为例:

代码语言:javascript
复制
df = data.frame( id = 1:26, letter = letters)
newvalue = rnorm(26)

我想将新值作为一个新列添加到magrittr链中的df中。我猜是这样的:

代码语言:javascript
复制
df %>%
  inset('new_column_name', newvalue)

但这不起作用,大概是因为我不太明白[<- ( inset()是别名)的语法应该是什么样子。

在磁链之外,我可以:

代码语言:javascript
复制
df['new_column_name']  <- newvalue

但我的问题是如何在一个链内完成它,在那里我已经做过各种各样的和无菌的操作了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-20 17:08:14

以你的例子和我的快速评论为例:

代码语言:javascript
复制
library(magrittr)

df <- data.frame( id = 1:26, letter = letters)

newvalue <- rnorm(26)

你要做的就是:

代码语言:javascript
复制
df %>% inset("newvalue", value=newvalue)

##    id letter    newvalue
## 1   1      a -0.44805172
## 2   2      b -0.36284495
## 3   3      c  1.56175094
## 4   4      d  1.48775535
## 5   5      e -0.29086149
## 6   6      f  0.46456966
## 7   7      g  0.01130394
## 8   8      h  0.57100808
## 9   9      i -0.87445603
## 10 10      j  0.81932107
...

但是,您可以跳过magrittrinset(),因为这是可行的:

代码语言:javascript
复制
`[<-`(df, "newvalue", value=newvalue)

##    id letter    newvalue
## 1   1      a -0.44805172
## 2   2      b -0.36284495
## 3   3      c  1.56175094
## 4   4      d  1.48775535
## 5   5      e -0.29086149
## 6   6      f  0.46456966
## 7   7      g  0.01130394
## 8   8      h  0.57100808
## 9   9      i -0.87445603
...

也是如此:

代码语言:javascript
复制
df %>% `[<-`("newvalue", value=newvalue)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32124044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档