我对R来说比较新,我正在尝试简化ANOVA脚本以从表中读取一组因子名称,并对这些因素之间的相互作用进行统计测试。
我的基本问题是如何在调用aov时不必手动写出因子的名称,如下所示:
aov2 <- aov(no_gap ~ Diag*Age, data=data)
但相反,要索引一个包含感兴趣因素名称的变量,就像这样(但这不起作用):
aov2 <- aov(get(vars[5]) ~ get(vars[1])*get(vars[2]), data=data)
这是我的整个剧本:
#Load data
outName <- read_file("fileNameToWrite.txt")
data <- read.table(header=TRUE, "testDataTable.txt",stringsAsFactors = TRUE)
vars <- colnames(data)
# Make sure subject column is a factor
cols <- c(vars[1:2])
data[,cols] <- data.frame(apply(data[cols], 2, as.factor))
##
# 2x2 between:
aov2 <- aov(get(vars[5]) ~ get(vars[1])*get(vars[2]), data=data)
aov2 <- aov(no_gap ~ Diag*Age, data=data)
aov2 <- aov(apply(vars[5]) ~ get(vars[1])*get(vars[2]), data=data)
summary(aov2)
作为参考,这就是&#34; vars&#34;在评估时看起来像:
> vars
[1] "subject" "Diag" "Age" "gap" "no_gap"
非常感谢你的帮助!!
答案 0 :(得分:0)
您传递给no_gap ~ Diag*Age
的参数aov
是公式对象。您可以从vars
创建公式对象,如下所示:
myform <- as.formula(sprintf("%s ~ %s * %s", vars[5], vars[1], vars[2]))
aov2 <- aov(myform, data=data)