【问题标题】:Can't print each iteration in my for loop code correctly无法正确打印我的 for 循环代码中的每次迭代
【发布时间】:2021-10-24 07:18:51
【问题描述】:

如何为此打印每次迭代?它只是多次打印第一次迭代。或者这不是正确循环每一列?

编辑:刚刚意识到我一直在方差分析中指定相同的变量。但现在我不知道如何在每一列上运行这个方差分析。

CR <- data2[data2$cv == "CR",]
colu <- CR[,5:36]

for (i in colnames(colu)){
  ANOVA <- aov(i ~ block + loc, data=CR)
  ANOVA_SUMMARY <- summary(ANOVA)
  test <- HSD.test(ANOVA , "loc")
  print(test$groups)
}

【问题讨论】:

  • 循环中应该发生什么变化?你有变量i,但你从来没有在循环体中使用它。

标签: r for-loop iteration anova


【解决方案1】:

i 不包含在您的 for 循环中,因此它将打印结果为

    aov(days_til_flower ~ block + loc, data=CR)

【讨论】:

  • 刚刚意识到这一点,我进行了编辑。现在我不确定为什么它不会运行方差分析。我收到此错误:model.frame.default 中的错误(公式 = i ~ 块 + loc,数据 = CR,drop.unused.levels = TRUE):可变长度不同(为“块”找到)
【解决方案2】:

您应该使用reformulateas.formula 来创建aov 中使用的公式对象。试试吧,

for (i in colnames(colu)){
  ANOVA <- aov(reformulate(c('block', 'loc'), i), data=CR)
  ANOVA_SUMMARY <- summary(ANOVA)
  test <- HSD.test(ANOVA , "loc")
  print(test$groups)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 2014-01-03
    • 2012-08-29
    • 1970-01-01
    • 2018-02-06
    相关资源
    最近更新 更多