繁体   English   中英

没有magrittr的dplyr博览会?

[英]exposition in dplyr without magrittr?

dplyr是否具有magrittr的%$%运算符的首选语法,因为在tidyverse中默认不加载它? 例如,我经常使用这个:

data.frame(A=rbinom(100,1,p=0.5),B=rbinom(100,1,p=0.5)) %$% chisq.test(A,B)

有没有一种首选的方法可以在单独的tidyverse中做到这一点? 我觉得pull()应该可以做到这一点,但我无法弄清楚如何在管道内调用两次pull()。

来自magrittr的vigenettes

“exposition”管道运算符%$%将左侧对象中的名称暴露给右侧表达式。 从本质上讲,它是使用with函数的简写。

所以你可以with

data.frame(A=rbinom(100,1,p=0.5),B=rbinom(100,1,p=0.5)) %>% with(chisq.test(A,B))

你可以使用一个点. 引用原始数据帧,并使用大括号{}来阻止%>%填充第一个参数:

data.frame(A=rbinom(100,1,p=0.5),B=rbinom(100,1,p=0.5)) %>% 
    {chisq.test(.$A, .$B)} 

除了@Marius解决方案之外,如果我们只需要提取p-value ,还有一个summarise选项

 set.seed(24)
 data.frame(A=rbinom(100,1,p=0.5),B=rbinom(100,1,p=0.5)) %>% 
         summarise(p_val = chisq.test(A, B)$p.val)
 #     p_val
 #1 0.8394397

假设,我们需要获取其他参数,然后使用broom::tidy

set.seed(24)
data.frame(A=rbinom(100,1,p=0.5),B=rbinom(100,1,p=0.5)) %>% 
    summarise(p_val = list(broom::tidy(chisq.test(A, B)))) %>%
    unnest
#  statistic   p.value parameter                                                       method
#1 0.0410509 0.8394397         1 Pearson's Chi-squared test with Yates' continuity correction

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM