Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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 如何将tabyl()与函数中的两个变量一起使用?_R_Function_Janitor - Fatal编程技术网

R 如何将tabyl()与函数中的两个变量一起使用?

R 如何将tabyl()与函数中的两个变量一起使用?,r,function,janitor,R,Function,Janitor,我正在制作两个包含大量变量的表,因此我希望编写使用来自看门人包的tabyl()的函数,并映射我感兴趣的变量 第一个功能工作正常: cars = datasets::mtcars first_table = function(variable){ tabyl(variable, show_na = FALSE) %>% adorn_pct_formatting(digits = 1) } first_table(cars$vs) 第二个表的生成方式几乎相同,

我正在制作两个包含大量变量的表,因此我希望编写使用来自看门人包的tabyl()的函数,并映射我感兴趣的变量

第一个功能工作正常:

cars = datasets::mtcars

first_table = function(variable){
  
  tabyl(variable, show_na = FALSE) %>% 
  adorn_pct_formatting(digits = 1) 
  
}

first_table(cars$vs)

第二个表的生成方式几乎相同,但应该生成两个变量和行百分比的交叉表,而不是表示单个变量的表。此代码和输出表示我试图对函数执行的操作:

cars %>% 
  tabyl(vs, am, show_na = FALSE) %>% 
  adorn_percentages("row") %>% 
  adorn_pct_formatting(digits = 1) %>% 
  adorn_ns()

但是,当我将其作为函数编写时,tabyl()函数似乎只想识别第一个变量:

second_table = function(variable1, variable2){
  
  tabyl(variable1, variable2, show_na = FALSE) %>% 
  adorn_percentages("row") %>% 
  adorn_pct_formatting(digits = 1) %>% 
  adorn_ns() 
  
}

second_table(cars$vs, cars$am)


我不太确定问题出在哪里,我想知道如何编辑这个函数,以提供一个2x2表格,其中包含行百分比,我可以在没有上述函数的情况下生成该表格


非常感谢您的帮助。

不要传递列值,而是传递不带引号的列名,并使用curly_curly操作符进行计算。
{}

second_table <- function(dat, variable1, variable2){
 dat %>% 
  tabyl({{variable1}}, {{variable2}}, show_na = FALSE) %>% 
  adorn_percentages("row") %>% 
  adorn_pct_formatting(digits = 1) %>% 
   adorn_ns() 

 }

注意:最好将数据集名称也作为参数传递

这正是我想要的-谢谢!
second_table(cars, vs, am)
#  vs        0         1
#  0 66.7% (12) 33.3% (6)
#  1 50.0%  (7) 50.0% (7)