从应用函数中提取p.value

时间:2016-03-19 10:26:25

标签: r

我想从apply-function中仅提取p值。我在几个柱子(A-D)上做了几个统计测试(shapiro-test,kruskal-Vallis和ANOVA)。它可以自动运行,但我总是将整个列表作为结果。

我的data.frame是calles data1。

b< -apply(data1 [,c(" A"," B"," C"," D")] ,2,shapiro.test); b

如果我将$ p.value或$ p.val添加到函数中,结果显示" NULL" ("零&#34)。

b< -apply(data1 [,c(" A"," B"," C"," D")] ,2,shapiro.test)$ p.val

  

B $ p.val   NULL

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

S.R,

使用apply,您将获得shapiro.test对象的列表。要将此列表中的值提取到data.frame中,您可以:

b<-apply(data1[,c("A", "B","C","D")],2,shapiro.test)
do.call(rbind,lapply(b,function(v){v$p.value}))

这将为您提供一个data.frame,每行p.value

使用mtcars构建可重现的示例:

b<-apply(mtcars[,c("disp","hp","drat","wt","qsec")],2,shapiro.test)
do.call(rbind,lapply(b,function(v){v$p.value}))

产生p.value值的data.frame。

          [,1]
disp 0.02080657
hp   0.04880824
drat 0.11006076
wt   0.09265499
qsec 0.59351765