Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何将lappy与传递给双向tabyl的列列表一起使用_R_Lapply_Janitor - Fatal编程技术网

R 如何将lappy与传递给双向tabyl的列列表一起使用

R 如何将lappy与传递给双向tabyl的列列表一起使用,r,lapply,janitor,R,Lapply,Janitor,我正在尝试使用lappy()创建多个交叉表,使用tabyl()函数,我非常喜欢并且非常熟悉该函数。我更喜欢这种格式,这样我可以继续用它做其他事情 但是,我只能让lappy()使用单向tabyl()这样: list_cars <- c("cyl", "gear") lapply(list_cars, function(w) tabyl(mtcars, w)) 但是,我想这样做,但是使用双向tabyl(),因此本质上显示tabyl(mtcars,cyl

我正在尝试使用
lappy()
创建多个交叉表,使用
tabyl()
函数,我非常喜欢并且非常熟悉该函数。我更喜欢这种格式,这样我可以继续用它做其他事情

但是,我只能让
lappy()
使用单向
tabyl()
这样:

list_cars <- c("cyl", "gear")
lapply(list_cars, function(w) tabyl(mtcars, w))
但是,我想这样做,但是使用双向
tabyl()
,因此本质上显示
tabyl(mtcars,cyl,carb)
tabyl(mtcars,gear,carb)
,因此使用
carb
作为“by”变量

library(janitor)

list_cars <- c("cyl", "gear")
lapply(list_cars, function(w) tabyl(mtcars, .data[[w]], carb))

#[[1]]
# cyl 1 2 3 4 6 8
#   4 5 6 0 0 0 0
#   6 2 0 0 4 1 0
#   8 0 4 3 6 0 1

#[[2]]
# gear 1 2 3 4 6 8
#    3 3 4 3 5 0 0
#    4 4 4 0 4 0 0
#    5 0 2 0 1 1 1
我想要的是这样的:

  cyl 1 2 3 4 6 8
    4 5 6 0 0 0 0
    6 2 0 0 4 1 0
    8 0 4 3 6 0 1

 gear 1 2 3 4 6 8
    3 3 4 3 5 0 0
    4 4 4 0 4 0 0
    5 0 2 0 1 1 1
当我尝试这个:

lapply(list_cars, function(w) tabyl(mtcars, w, carb))
我得到一个错误:

Error: Must group by variables found in `.data`.
* Column `w` is not found.
我也尝试过各种各样的变化,但没有得到任何工作

lapply(list_cars, function(w, disp) tabyl(mtcars, w, carb)) ## Nope
lapply(list_cars, function(x, disp) tabyl(mtcars, {{x}}, {{carb}})) ## Very wrong
lapply(list_cars, function(v) paste0("tabyl(mtcars, ", v, ", disp)") %>% as.formula())  ## Also seems very wrong

我似乎找不到其他类似的问题,也找不到任何使用
tabyl()
的人。任何帮助都将不胜感激!谢谢。

当您将列名作为字符串变量传递时,请使用
.data

library(janitor)

list_cars <- c("cyl", "gear")
lapply(list_cars, function(w) tabyl(mtcars, .data[[w]], carb))

#[[1]]
# cyl 1 2 3 4 6 8
#   4 5 6 0 0 0 0
#   6 2 0 0 4 1 0
#   8 0 4 3 6 0 1

#[[2]]
# gear 1 2 3 4 6 8
#    3 3 4 3 5 0 0
#    4 4 4 0 4 0 0
#    5 0 2 0 1 1 1
图书馆(看门人)

列出你的车谢谢!!这正是我想要的。你知道为什么当它只是一个单向tabyl时不使用.data[[w]]是可以的吗?我自己也很惊讶。可以使用
tabyl(mtcars,“cyl”)
但不能使用
tabyl(mtcars,“cyl”,“gear”)
。我在文档中找不到任何相关的东西。知道我没有发疯或错过一些明显的东西至少让我感到安慰!