在mutate()内部使用get()根据向量中的值添加列

时间:2019-06-11 15:58:41

标签: r dplyr

我想为向量的每个元素添加一列。列值将基于某些条件。我在get()内使用过filter(),但是在mutate()内却无法使用。

这里是一个例子:

df <- read.table(text =
"A   B    C
1     2     3 
4     5     6
7     8     9",
header = TRUE, stringsAsFactors = FALSE)

然后我使用一个函数来遍历向量。这是仅发送一个字符串的示例

ID_function = function(var_name){

  df = df%>%
    mutate(get(var_name)=A + B)
}

ID_function("TEST")

错误是:

Error: unexpected '=' in:
"  df = df%>%
    mutate(get(var_name)="

还有其他可以使用的方法吗?

1 个答案:

答案 0 :(得分:2)

我们可以使用赋值运算符(:=)代替<-并评估(!!)字符串以在tidyverse中创建列

library(tidyverse)
ID_function = function(var_name){

  df %>%
       mutate(!!var_name := A + B)
     }

ID_function("TEST")
#    A B C TEST
#1 1 2 3    3
#2 4 5 6    9
#3 7 8 9   15