我是 R 的初学者,我想在包含超过 200 列结果变量的数据集中执行 ANCOVA。对我来说最重要的是提取这些变量的 p 值和边际均值。我在 lapply() 函数的帮助下成功提取了 p 值,但是当我提取边际手段时,我得到了这样的错误Error in eval(predvars, data, env) : object 'x' not found
。
这里我以内置数据集“iris”为例来展示我的问题。
data("iris")
#load 我会使用的包
library(car); library(compute.es); library(effects); library(ggplot2);
library(multcomp); library(pastecs); library(WRS)
#set contrasts 用于以下 ANCOVA 测试:
contrasts(iris$Species) <- contr.poly(3)
#perform ANCOVA 同时处理多个结果变量(这里我比较了不同 Specie 级别的多个结果变量,Petal.Width 作为协变量)
list1 <- lapply(iris[, 1:3], function(x) Anova(aov(x ~ Petal.Width + Species, data = iris), type="III"))
str(list1)
#提取主要测试的p值
pvalues <- stack(lapply(iris[, 1:3], function(x) Anova(aov(x ~ Petal.Width + Species, data = iris), type="III")[3, 4]))[2:1]
上面的代码运行良好,但是当我使用 effect() 函数提取边际均值时出现错误: #extract margin mean
list2 <- lapply(iris[, 1:3], function(x) summary(effect("Species", aov(x ~ Petal.Width + Species, data = iris)), se=TRUE))
eval 中的错误(predvars、data、env):找不到对象“x”
marginal.means <- stack(lapply(iris[, 1:3], function(x) summary(effect("Species", aov(x ~ Petal.Width + Species, data = iris)), se=TRUE)[[5]][[1]][1]))[2:1]
eval 中的错误(predvars、data、env):找不到对象“x”
#当我提取某个变量(例如 Sepal.Length)的边际平均值时,不使用 <lapply(),它可以工作:
marginal.mean1 <- summary(effect("Species", aov(Sepal.Length ~ Petal.Width + Species, data = iris)), se=TRUE)
marginal.mean1
输出:
Species
setosa versicolor virginica
5.880113 5.819859 5.830028
Lower 95 Percent Confidence Limits
Species
setosa versicolor virginica
5.490905 5.676927 5.485953
Upper 95 Percent Confidence Limits
Species
setosa versicolor virginica
6.269322 5.962791 6.174102
由于结果变量超过 200 列,我想提取一次边际均值,而不是一一提取。
非常感谢您的帮助,
艾拉