在没有magrittr的情况下用dplyr进行阐述?
dplyr是否有magrittr的%$%运算符的首选语法,因为默认情况下不会在tidyverse中加载该运算符?例如,我经常使用:在没有magrittr的情况下用dplyr进行阐述?,r,dplyr,R,Dplyr,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()两次。您可以使用点引用原始数据帧,并使用大括号{}防止%%>%填充第一个参数: dat
data.frame(A=rbinom(100,1,p=0.5),B=rbinom(100,1,p=0.5)) %$% chisq.test(A,B)
在tidyverse中是否有更好的方法来实现这一点?我觉得pull()应该能够做到这一点,但我不知道如何在管道中调用pull()两次。您可以使用点
引用原始数据帧,并使用大括号{}
防止%%>%
填充第一个参数:
data.frame(A=rbinom(100,1,p=0.5),B=rbinom(100,1,p=0.5)) %>%
{chisq.test(.$A, .$B)}
从以下的vigenetes:
“exposition”管道操作符,%%$%
公开
将左侧对象转换为右侧表达式。基本上,
这是使用with函数的简写
所以你可以用和来做:
data.frame(A=rbinom(100,1,p=0.5),B=rbinom(100,1,p=0.5)) %>% with(chisq.test(A,B))
除了@Marius solution,如果我们只需要提取p值
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
是tidyverse的一部分,它不是使用库(tidyverse)
@KevinArseneau加载的包之一,因此您的解决方案是“如果您想使用%$%
,请使用库(magrittr)
”@Spacedman,我的评论并不是真的想成为一个解决方案,我认为其他人在这方面做得很好。但我认为需要澄清的是,元包不是tidyverse的限制,而且间接地说,library(magrittr)
工作得很好。虽然我不喜欢$x
而不喜欢裸列名,但我还是喜欢花括号方法。为什么不使用库(magrittr)
然后使用%$%
管道呢?