是否可以从piping
运算符运行t.test
?
我试图找到答案,但是有关此主题的大多数问题都在同一数据集上进行许多测试。
我看上去是一个broom
软件包,但似乎很适合阅读结果。
我感兴趣的是是否可以仅使用piping
并在输出上运行t.test()
。
例如,这是一些示例数据
library(dplyr)
d <- data.frame(
group = sample(LETTERS[1:2], size = 10, replace = T),
amount = sample(1:3, size = 10, replace = T)
)
如果我使用base R
运行t.test
,我会得到结果:
t.test(d$amount~d$group, var.equal = T)
> d
group amount
1 A 2
2 A 2
3 B 1
4 B 3
5 A 2
6 B 1
7 B 2
8 A 1
9 B 3
10 A 3
但是,如果我尝试使用 piping
,我会得到错误:
d %>% t.test(amount~group, var.equal = T)
Error: is.atomic(x) is not TRUE
In addition: Warning messages:
1: In is.na(y) :
is.na() applied to non-(list or vector) of type 'language'
2: In mean.default(x) : argument is not numeric or logical: returning NA
3: In var(x) : NAs introduced by coercion
4: In mean.default(y) : argument is not numeric or logical: returning NA
我需要做一些其他操作吗?
我们可以将其放在summarise
中,作为list
d %>%
summarise(ttest = list(t.test(amount ~ group, var.equal = TRUE)))
,如果我们只需要提取PVALUE,则可以完成
d %>%
summarise(pval = t.test(amount ~ group, var.equal = TRUE)$p.value)
,或者我们可以将其放置在{}
中,然后进行t.test
d %>%
{t.test(.$amount ~ .$group, var.equal = TRUE)}
或不带括号,通过为公式方法指定data
d %>%
t.test(amount ~ group, data = ., var.equal = TRUE)
编辑:基于 @hpesoj626的注释
'rstatix'一个软件包完全处理管道内的基本统计测试
https://cran.r-project.org/web/packages/rstatix/rstatix.pdf
rstatix提供了诸如t.test((或cohensd((之类的功能的包装器,从而可以将其与管道操作员一起使用。按照您的要求执行t检验,只需使用t.test((的包装器,t_test((:
d %>% t_test(amount ~ group, var.equal = T)