如何在 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))
}

但是,您似乎试图为每一列计算方差分析,而您至少需要两个变量。即,标称标度条件变量和区间标度因变量(例如性别和体重)。所以我通常想知道方差分析是否是解决您问题的正确方法。无论如何,为了回答这个问题,需要样本数据和研究问题的摘要。