假设我有以下数据:
test_df <- data.frame(a=rnorm(100), b=rnorm(100))
以下作品:
test_df %>%
summarise(y = mean(a))
现在假设我要传递一个字符串而不是a
string_outcome <- "a" # I want to use this
test_df %>%
summarise(y = mean(string_outcome))
那行不通。我尝试使用!!string_outcome
,但这也不起作用。我该如何解决?
答案 0 :(得分:7)
因为它是一个字符串,所以将其转换为符号(sym
中的符号{rlang
)并求值(!!
)
test_df %>%
summarise(y = mean(!! rlang::sym(string_outcome)))
或使用summarise_at
可以在vars
参数中获取字符串
test_df %>%
summarise_at(vars(string_outcome), list(y = ~ mean(.)))
或者如果我们需要一个没有任何属性的值,甚至可以使用pull
和mean
test_df %>%
pull(string_outcome) %>%
mean