r - 在 R 的 for 循环中使用字符串 - 将字符串作为 for 循环中的方差分析中的变量包含在内时出错

标签 r for-loop anova

我在 R 中有以下方差分析,效果很好:

fit <- aov(dependent1 ~ X + Z + X*Z, data=dataset)
drop1(fit,~.,test="F")

“dependent1”、“X”和“Z”是列名称。

我想创建一个 for 循环,在其中循环一定数量的因变量,我尝试了以下方法:

dependent_variables <- c("dependent1", "dependent2", "dependent3")

for (i in dependent_variables) {
  fit <- aov(i ~ X + Z + X*Z, data=dataset)
  drop1(fit,~.,test="F")
}

如果我运行此命令,我会收到一条错误消息:

Error in model.frame.default(formula = i ~ X + Z + X *  : 
  variable lengths differ (found for 'X')

知道这里出了什么问题吗?

最佳答案

示例数据(可能满足也可能不满足方差分析的标准)

X <- rnorm(100)
Z <- rnorm(100)
dependent1 <- rnorm(100)
dependent2 <- rnorm(100)
dependent3 <- rnorm(100)

dataset <- cbind(data.frame(X, Z, dependent1, dependent2, dependent3))

以下脚本可以工作,您需要输入因变量的行列号:

for (i in 3:5) {
fit <- aov(dataset[ , i] ~ X + Z + X*Z, data=dataset)
drop <- drop1(fit,~.,test="F")
print(fit)
print(drop)
}

关于r - 在 R 的 for 循环中使用字符串 - 将字符串作为 for 循环中的方差分析中的变量包含在内时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27149708/

相关文章:

c - 如何打破 C 中的无限 for(;;) 循环?

python - 如何找到对数线性回归的方差分析?

r - 多重 t 检验比较

r - 如何使用 R (tidyverse) 中的旧名称和新名称表重命名表中的列?

r - 从指定的x值显示geom_smooth()趋势线

linux - 以日期/时间格式 (POSIXct) 转换字符适用于 Windows 而不是 Linux

java - ArrayList for 循环仅适用于第一个元素

r - 在同一 R Markdown 页面中将部分从两列更改为一列

java - 要找到给定数字的质因数,为什么要将 for 循环的第二条语句设置为 i * i <= userInput 而不是 i <= userInput?

anova - 使用 mgcv gam 负二项式混合模型中固定效应的显着性