我一直在阅读这篇关于如何使用 dplyr 中变量的字符串引用的文章。
我想根据字符串输入改变现有列:
var <- 'vs'
my_mtcars <- mtcars %>%
mutate(get(var) = factor(get(var)))
Run Code Online (Sandbox Code Playgroud)
错误:意外的“=”:“my_mtcars <- mtcars %>% mutate(get(var) ="
还尝试过:
my_mtcars <- mtcars %>%
mutate(!! rlang::sym(var) = factor(!! rlang::symget(var)))
Run Code Online (Sandbox Code Playgroud)
这导致了完全相同的错误消息。
如何根据在 var 变量中传递字符串“vs”进行变异来执行以下操作?
# works
my_mtcars <- mtcars %>%
mutate(vs = factor(vs))
Run Code Online (Sandbox Code Playgroud)
此操作可以通过:=whilevaluing( !!) 并使用转换为symbol 并评估赋值的 rhs 来执行
library(dplyr)
my_mtcars <- mtcars %>%
mutate(!! var := factor(!! rlang::sym(var)))
class(my_mtcars$vs)
#[1] "factor"
Run Code Online (Sandbox Code Playgroud)
或者不用想太多,使用mutate_at,它可以接受字符串vars并应用function感兴趣的
my_mtcars2 <- mtcars %>%
mutate_at(vars(var), factor)
Run Code Online (Sandbox Code Playgroud)