如何在 r 中使用字符串作为公式
How to use a string as a formula in r
我正在尝试根据 time_of_day
对我的所有数据框列进行方差分析,这是一个因素。我的其余专栏都是双打且长度相等。
x = 0
pdf("Time_of_Day.pdf")
for (i in names(data_in)){
if(x > 9){
test <- aov(paste(i, "~ time_of_day"), data = data_in)
}
x = x+1
}
dev.off()
运行 这段代码给我这个错误:
Error: $ operator is invalid for atomic vectors
我的代码在哪里调用 $
?我怎样才能解决这个问题?抱歉,我是 r 的新手,我很迷茫。
我的研究问题是看看一天中的时间是否对大脑中不同 ROI 的脑容量有影响。一天中的时间分为早上、下午或晚上三类。
编辑:已解决
将字符串视为公式将允许 运行 尽管有人建议我不要有这么多独立值,因为它会夸大模型的统计结果。我不会删除这个,因为有人对 aov()
调用有类似的问题。
x = 0
pdf("Time_of_Day.pdf")
for (i in names(data_in)){
if(x > 9){
test <- aov(as.formula(paste(i, "~ time_of_day")), data = data_in)
}
x = x+1
}
dev.off()
我猜你的问题是你没有将方差分析公式集成到你的 aov() 函数中。请参阅以下工作示例:
data_in <- data.frame(c(1,2,3),c(4,5,6),c(7,8,9))
names(data_in) <- c("first","second","third")
for (i in seq_along(names(data_in))){
test <- aov(data_in$first ~ data_in$second, data = data_in)
print(summary(test))
}
但是,您似乎试图为每一列计算方差分析,而您至少需要两个变量。即,标称标度条件变量和区间标度因变量(例如性别和体重)。所以我通常想知道方差分析是否是解决您问题的正确方法。无论如何,为了回答这个问题,需要样本数据和研究问题的摘要。
我正在尝试根据 time_of_day
对我的所有数据框列进行方差分析,这是一个因素。我的其余专栏都是双打且长度相等。
x = 0
pdf("Time_of_Day.pdf")
for (i in names(data_in)){
if(x > 9){
test <- aov(paste(i, "~ time_of_day"), data = data_in)
}
x = x+1
}
dev.off()
运行 这段代码给我这个错误:
Error: $ operator is invalid for atomic vectors
我的代码在哪里调用 $
?我怎样才能解决这个问题?抱歉,我是 r 的新手,我很迷茫。
我的研究问题是看看一天中的时间是否对大脑中不同 ROI 的脑容量有影响。一天中的时间分为早上、下午或晚上三类。
编辑:已解决
将字符串视为公式将允许 运行 尽管有人建议我不要有这么多独立值,因为它会夸大模型的统计结果。我不会删除这个,因为有人对 aov()
调用有类似的问题。
x = 0
pdf("Time_of_Day.pdf")
for (i in names(data_in)){
if(x > 9){
test <- aov(as.formula(paste(i, "~ time_of_day")), data = data_in)
}
x = x+1
}
dev.off()
我猜你的问题是你没有将方差分析公式集成到你的 aov() 函数中。请参阅以下工作示例:
data_in <- data.frame(c(1,2,3),c(4,5,6),c(7,8,9))
names(data_in) <- c("first","second","third")
for (i in seq_along(names(data_in))){
test <- aov(data_in$first ~ data_in$second, data = data_in)
print(summary(test))
}
但是,您似乎试图为每一列计算方差分析,而您至少需要两个变量。即,标称标度条件变量和区间标度因变量(例如性别和体重)。所以我通常想知道方差分析是否是解决您问题的正确方法。无论如何,为了回答这个问题,需要样本数据和研究问题的摘要。