是否可以运行t.test
from piping
运营商?
我试图找到这个问题的答案,但围绕这个主题的大多数问题都是在同一数据集上进行许多测试。
我看过一个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)
)
如果我运行一个t.test
using base R
,我得到结果:
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
as a list
d %>%
summarise(ttest = list(t.test(amount ~ group, var.equal = TRUE)))
如果我们只需要提取 p 值,可以这样做
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 的评论
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)