带'dplyr::count()的标准eval`

带'dplyr::count()的标准eval`,r,dplyr,standard-evaluation,R,Dplyr,Standard Evaluation,如何将字符向量传递给 这会引发以下两个错误: 错误:列的长度必须为32(行数)或1, 不是2 错误:只能将字符串转换为符号 要从字符串创建符号列表,需要rlang::syms(而不是rlang::sym)。要取消引用列表或向量,请使用(不是!!)。以下工作将起作用: 库(magrittr) 变量共青团 #> #> [[2]] #>vs mtcars%>% dplyr::count(!!!vars_sym) #>#tibble:5 x 3 #>共青团vs n #> #> 1 4

如何将字符向量传递给

这会引发以下两个错误:

错误:列
的长度必须为32(行数)或1, 不是2

错误:只能将字符串转换为符号


要从字符串创建符号列表,需要
rlang::syms
(而不是
rlang::sym
)。要取消引用列表或向量,请使用
(不是
!!
)。以下工作将起作用:

库(magrittr)
变量共青团
#> 
#> [[2]]
#>vs
mtcars%>%
dplyr::count(!!!vars_sym)
#>#tibble:5 x 3
#>共青团vs n
#>     
#> 1     4     0     1
#> 2     4     1    10
#> 3     6     0     3
#> 4     6     1     4
#> 5     8     0    14
也许你可以试试

mtcars %>%
  group_by(cyl, vs) %>%
  tally()
这给

# A tibble: 5 x 3
# Groups:   cyl [3]
    cyl    vs     n
  <dbl> <dbl> <int>
1     4     0     1
2     4     1    10
3     6     0     3
4     6     1     4
5     8     0    14
#一个tible:5 x 3
#组别:共青团[3]
共青团vs n
1     4     0     1
2     4     1    10
3     6     0     3
4     6     1     4
5     8     0    14

让它成为
!!!rlang::syms(变量)
。您可以澄清术语“取消引用”是指将字符向量转换为R“符号”,因为术语“引用”也可以解释为使用函数
quote
,其中一种形式的“反转”然后可以使用
as.character
来完成,这将传递一种不同类型的“引号”值。OP尝试通过编程方式来完成此操作,例如使用tidyeval,而不是通过在
group\u by
mtcars %>%
  group_by(cyl, vs) %>%
  tally()
# A tibble: 5 x 3
# Groups:   cyl [3]
    cyl    vs     n
  <dbl> <dbl> <int>
1     4     0     1
2     4     1    10
3     6     0     3
4     6     1     4
5     8     0    14