【问题标题】:p.value extraction from an apply-function从应用函数中提取 p.value
【发布时间】:2016-03-19 19:29:47
【问题描述】:

我只想从应用函数中提取 p 值。我在几个列 (A-D) 上进行了几个统计测试(shapiro-test、kruskal-Vallis 和 ANOVA)。它可以自动运行,但我总是得到一个完整的列表作为结果。

我的 data.frame 调用 data1。

b

如果我将 $p.value 或 $p.val 添加到函数中,结果将显示“NULL”(“Zero”)。

b

b$p.val 空

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

【问题讨论】:

  • 请让您的代码可重现,data1 中有什么内容?
  • data1 是一个表格,其中包含来自土壤管理的 50 行观测值,用于几个参数(氮、磷酸盐、碳,我在列中称为“A”、“B”、“C”等)。我想对所有列应用测试,并且只将 p 值作为结果。也就是说,向量或列表中每一列的 p 值。
  • 请考虑阅读How to Ask 以及如何生成reproducible example
  • dput() 您的数据,而不是描述它,以及您的预期输出。

标签: r


【解决方案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}))

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

使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    相关资源
    最近更新 更多