使用I字符串来引用dplyr中的变量吗?

时间:2019-06-11 14:36:45

标签: r dplyr nse

假设我有以下数据:

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,但这也不起作用。我该如何解决?

1 个答案:

答案 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(.)))

或者如果我们需要一个没有任何属性的值,甚至可以使用pullmean

test_df %>% 
       pull(string_outcome) %>%
       mean