簡體   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