我正在尝试在一个数据集中的任意一组变量上运行[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
。如果我为每个变量手动运行dplyr::count()
一次,我会得到预期的结果。但是当我尝试将count()
置于for循环中以自动为一组变量中的每个变量运行它时,我收到了一个错误。似乎问题在于我如何在for循环中将变量传递给count()
。我知道count()
取消引用其变量,无论出于什么原因,R都无法判断我传递的是变量。
我已经尝试了很多方法来解决这个问题,包括将变量传递为count()
,data$var1
,quo(var1)
,enquo(var1)
,var1
, “var1”
和quo(data$var1)
以及使用enquo(data$var1)
取消选中迭代器。我还尝试将!!
的参数指定为count()
,但这导致count(x=data, var=i)
返回数据中的总行数作为每次迭代的计数。如果您对导致错误的原因或我如何解决错误有任何想法,我将非常感谢听到它们!
这是一个可重复性最小的示例,它依赖于count()
中包含的lakers
数据集。
lubridate
答案 0 :(得分:7)
这有效:
myData[myCols] %>% tidyr::gather(var, value) %>% count(var, value)
# A tibble: 407 x 3
var value n
<chr> <chr> <int>
1 game_type away 17153
2 game_type home 17471
3 opponent ATL 904
4 opponent BOS 886
5 opponent CHA 412
6 opponent CHI 964
7 opponent CLE 822
8 opponent DAL 1333
9 opponent DEN 1855
10 opponent DET 845
# ... with 397 more rows
如果你想以愚蠢的方式传递myCols
,你必须查找rlang包。
答案 1 :(得分:4)
来自:https://github.com/tidyverse/dplyr/blob/master/vignettes/programming.Rmd
如果您有一个由变量名组成的字符向量,并希望通过for循环对其进行操作,请索引到特殊的.data
代词:
for (var in names(mtcars)) {
mtcars %>% count(.data[[var]]) %>% print()
}