我理解magrittr::inset()应该能够将向量分配给dataframe中的新列(作为extract()的一种对立面)。但我不明白语法应该如何工作。
举个玩具为例:
df = data.frame( id = 1:26, letter = letters)
newvalue = rnorm(26)我想将新值作为一个新列添加到magrittr链中的df中。我猜是这样的:
df %>%
inset('new_column_name', newvalue)但这不起作用,大概是因为我不太明白[<- ( inset()是别名)的语法应该是什么样子。
在磁链之外,我可以:
df['new_column_name'] <- newvalue但我的问题是如何在一个链内完成它,在那里我已经做过各种各样的和无菌的操作了。
发布于 2015-08-20 17:08:14
以你的例子和我的快速评论为例:
library(magrittr)
df <- data.frame( id = 1:26, letter = letters)
newvalue <- rnorm(26)你要做的就是:
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
...但是,您可以跳过magrittr的inset(),因为这是可行的:
`[<-`(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
...也是如此:
df %>% `[<-`("newvalue", value=newvalue)https://stackoverflow.com/questions/32124044
复制相似问题