【问题标题】:Extract variable name in R from string in a vector从向量中的字符串中提取 R 中的变量名
【发布时间】:2020-05-16 20:35:41
【问题描述】:

我想在向量中使用一些字符串作为一些 dplyr 动词的变量名,主要是计数。

让我们使用 Iris 并假设我有这个向量:

my_vec <- c("Sepal.Length","Sepal.Width","Petal.Length","Petal.Width","Species")

如果我决定count(Species) 一切都很好。

> iris %>% count(Species)
# A tibble: 3 x 2
  Species        n
  <fct>      <int>
1 setosa        50
2 versicolor    50
3 virginica     50

问题是当我想使用保存在向量中的字符串时,程序无法正确评估它。

> iris %>% count(my_vec[5])
# A tibble: 1 x 2
  `my_vec[5]`     n
  <chr>       <int>
1 Species       150

如何使用my_vec[5] 的值来获取第一个表而不是第二个?

【问题讨论】:

    标签: r string dplyr count evaluation


    【解决方案1】:

    我们可以转换为symbol 并评估 (!!)

    library(dplyr)
    iris %>% 
         count(!! rlang::sym(my_vec[5]))
    #     Species  n
    #1     setosa 50
    #2 versicolor 50
    #3  virginica 50
    

    如果是多个元素,则使用syms 并使用!!! 进行评估

    【讨论】:

    • 谢谢!这就是我想要的。我尝试了半小时使用 enquo、sym、bang bang 等,但没有意识到我必须结合使用它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 2017-02-19
    相关资源
    最近更新 更多