R 通过变量将Dunnett测试中的P值提取到表中

R 通过变量将Dunnett测试中的P值提取到表中,r,extract,extraction,R,Extract,Extraction,我有一个25列的列表,我正在通过Dunnett测试按组(4个级别)进行测试。我能够使用sapply函数让Dunnett按组为所有列工作,并且在将p值拉到表中时遇到了一些问题。下面是我试图使用iris数据集做的一个示例 iris <- iris iris$group <- ifelse(iris$Species =='setosa', 1, ifelse(iris$Species =='versicolor', 2, ife

我有一个25列的列表,我正在通过Dunnett测试按组(4个级别)进行测试。我能够使用
sapply
函数让Dunnett按组为所有列工作,并且在将p值拉到表中时遇到了一些问题。下面是我试图使用iris数据集做的一个示例

iris <- iris

iris$group <- ifelse(iris$Species =='setosa', 1,
               ifelse(iris$Species =='versicolor', 2,
               ifelse(iris$Species =='virginica', 3,
               0)))

iris$group <- as.factor(iris$group)
summary(glht(aov(Sepal.Length ~ group, iris), linfct=mcp(group="Dunnett" )))
test

iris$Species

dunnet_model_iris <- sapply(iris[-c(5,6)], function(y, f) summary(glht(aov(y ~ f, iris), linfct=mcp(f="Dunnett"))), f = iris$Species)

names(dunnet_model_iris[[10]]$pvalues)

p_value <- dunnet_model[[10]]$pvalues
p_value
问题:如何将每列的所有Dunnett比较p值提取到一个表中?


我在寻找答案时遇到了一些困难。如果有人有什么建议,我们将不胜感激。我不希望有任何代码,只是一些想法可以帮助我了解情况。

我们需要在使用
lapply将模型保留在
列表中后提取
test$pvalues

library(multcomp)
dunnet_model_iris <- lapply(iris[-c(5,6)], function(y, f) 
      summary(glht(aov(y ~ f, iris), linfct=mcp(f="Dunnett"))), f = iris$Species)
t(sapply(dunnet_model_iris, function(x) x$test$pvalues))
#                      [,1]         [,2]
#Sepal.Length  1.443290e-15 2.220446e-16
#Sepal.Width   5.551115e-16 9.074667e-10
#Petal.Length  1.110223e-16 2.220446e-16
#Petal.Width  -2.220446e-16 1.110223e-16

如果您一直使用“Dunnett”的拼写,您可能会在搜索时遇到困难。您应该更正标题和问题正文中的所有实例。
library(multcomp)
dunnet_model_iris <- lapply(iris[-c(5,6)], function(y, f) 
      summary(glht(aov(y ~ f, iris), linfct=mcp(f="Dunnett"))), f = iris$Species)
t(sapply(dunnet_model_iris, function(x) x$test$pvalues))
#                      [,1]         [,2]
#Sepal.Length  1.443290e-15 2.220446e-16
#Sepal.Width   5.551115e-16 9.074667e-10
#Petal.Length  1.110223e-16 2.220446e-16
#Petal.Width  -2.220446e-16 1.110223e-16
t(sapply(dunnet_model_iris["test",], `[[`, "pvalues"))