我是 R 的初学者,我想从对 200 多个结果变量执行的 ANCOVA 测试中提取边际均值。当我只stack()
对一个结果变量使用时效果很好,但是当我同时使用stack()
and时出现错误lapply()
。
这里我使用内置数据集“iris”来显示问题。数据集“iris”在 Species 中具有三个级别,我将其用Petal.Width
作协变量、Species
预测变量,并将前三列变量用作结果变量。
我的目的是同时提取对应结果变量的多个边际均值,而不是逐个提取。
#load data and packages
data("iris")
library(car); library(compute.es); library(effects); library(ggplot2);
library(multcomp); library(pastecs); library(WRS)
#set contrasts for the following ANCOVA tests
contrasts(iris$Species) <- contr.poly(3)
#perform
list2 <- lapply(colnames(iris)[1:3], function(x){
anova_fit = aov(reformulate(c("Petal.Width","Species"),x), data = iris)
summary(effect("Species",anova_fit, se=TRUE))
})
在我提出前一个问题(如何使用 effect() 函数提取多个变量的边际均值? )之后,上面的代码在 @StupidWolf 的帮助下运行良好。然后在执行以下代码时出现错误:
means.all <- stack(lapply(colnames(iris)[1:3], function(x){
anova_fit = aov(reformulate(c("Petal.Width","Species"),x), data = iris)
summary(effect("Species",anova_fit, se=TRUE))[[5]][1]
}))[2:1]
错误是 Error in rep.int(factor(names(x), unique(names(x))), lengths(x)) : invalid 'times' value
。
但是,当我只提取一个结果变量Sepal.Length
的边际均值时(例如),我可以使用以下代码提取边际均值:
anova_fit = aov(reformulate(c("Petal.Width","Species"),"Sepal.Length"), data = iris)
means1 <- summary(effect("Species",anova_fit, se=TRUE))[[5]][1]
我不知道如何正确使用stack()
和lapply()
来提取边际手段。
非常感谢!
艾拉