如何使用 magrittr::inset()?

How do I use magrittr::inset()?

我知道 magrittr::inset() 应该能够将向量分配给数据帧中的新列(与 extract() 相反)。但是我不明白语法应该如何工作。

假设我有,作为玩具示例:

df = data.frame( id = 1:26, letter = letters)
newvalue = rnorm(26)

我想将 newvalue 作为新列添加到 magrittr 链中的 df。我假设它是这样的:

df %>%
  inset('new_column_name', newvalue)

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

在 magrittr 链之外,我可以做:

df['new_column_name']  <- newvalue

但我的问题是如何在一个链中完成它,我已经在链中完成了各种不同的操作。

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

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
...

但是,您可以完全跳过 magrittrinset(),因为它有效:

`[<-`(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)