我想为向量的每个元素添加一列。列值将基于某些条件。我在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)="
还有其他可以使用的方法吗?
答案 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