我一直在阅读this帖子,内容涉及如何使用对dplyr中变量的字符串引用。
我想基于字符串输入来更改现有的列:
var <- 'vs'
my_mtcars <- mtcars %>%
mutate(get(var) = factor(get(var)))
错误:出现意外的“ =”: “ my_mtcars <-mtcars%>% mutate(get(var)=“
也尝试过:
my_mtcars <- mtcars %>%
mutate(!! rlang::sym(var) = factor(!! rlang::symget(var)))
这导致了完全相同的错误消息。
如何基于在var变量中传递字符串'vs'进行更改来执行以下操作?
# works
my_mtcars <- mtcars %>%
mutate(vs = factor(vs))
答案 0 :(得分:6)
可以在评估(:=
的同时使用!!
进行此操作,并使用转换为sym
bol并评估分配的rhs
library(dplyr)
my_mtcars <- mtcars %>%
mutate(!! var := factor(!! rlang::sym(var)))
class(my_mtcars$vs)
#[1] "factor"
或者不用考虑太多,就使用mutate_at
,它可以将vars
中的字符串并应用感兴趣的function
my_mtcars2 <- mtcars %>%
mutate_at(vars(var), factor)