【问题标题】:Creating a function to get a two way table using R创建一个函数以使用 R 获取双向表
【发布时间】:2021-02-03 15:39:12
【问题描述】:

我有以下数据:

require(dplyr)
x1=rbinom(1000,1,prob = 0.6)
x2=rbinom(1000,2,prob = c(0.3,0.4,0.3))
data=data.frame(x1,x2)

然后我需要对 x2=2 的数据进行交叉制表。

我使用dplyr函数得到想要的结果如下:

data %>% filter(x2==2) %>% count(x1,x2)
  x1 x2  n
1  0  2 38
2  1  2 71

这是我对数据执行的单一操作之一。我也需要多次这样做。所以,我尝试创建一个函数来获得相同的结果,如下所示:

fun1=function(data,text1,text2)
{
  return(data %>% filter({{text2}}==2) %>% count({{text1}},{{text2}}))
}
fun1(data,"x1","x2")

但我没有得到想要的结果。有人能帮我弄清楚我做错了什么吗?

谢谢!!

【问题讨论】:

  • 想要的结果是什么?
  • @Manu 和我没有这个功能的时候一样
  • {{}} 的要点是使用不带引号的列名。 fun1(data, x1, x2) 应该可以工作。
  • @GregorThomas 是的。我怎么错过了:(

标签: r function dplyr


【解决方案1】:

您已经编写了使用非标准评估 (NSE) 的函数,因此在调用您的函数时也要使用它。那就是不要将参数作为带引号的字符传递。改为这样做:

fun1(data, x1, x2)

#   x1 x2  n
# 1  0  2 41
# 2  1  2 74

【讨论】:

    猜你喜欢
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多