【问题标题】:for or foreach loop in R with Tukey's Test comparisonsR 中的 for 或 foreach 循环与 Tukey 的测试比较
【发布时间】:2014-06-25 03:50:34
【问题描述】:

以下是我的数据的示例:

metabolite  treatment area
x           A         1
x           B         2
x           C         3
y           A         4
y           B         5
y           C         6
z           A         7
z           B         8
z           C         9
x           A         12
x           B         22
x           C         32
y           A         42
y           B         52
y           C         62
z           A         72
z           B         82
z           C         92

对于每种代谢物,我想测试处理的平均面积是否不同。 换句话说:

代谢物 X : A vs. B, A vs. C, B vs. C 代谢物 Y : A vs. B, A vs. C, B vs. C 代谢物 Z : A vs. B, A vs. C, B vs. C

我需要在 R 中执行 Tukey 检验 (http://en.wikipedia.org/wiki/Tukey%27s_range_test),这将对处理(A 与 B、A 与 C 和 C 与 B)进行每对比较。这是我想出的,但它不起作用。

`for (i in levels(data$metabolite)) { 
tukey_part1 <- aov(data$area ~ data$treatment)
tukey_part2 <- TukeyHSD(x=tukey_part1, 'data$treatment', conf.level=0.95) 
                             } `

请帮忙!

【问题讨论】:

    标签: r for-loop foreach statistics anova


    【解决方案1】:

    好吧,您实际上从未尝试使用您正在循环的i 变量。我继续将for 循环更改为使用lapply。这个怎么样

    res<-lapply(levels(data$metabolite), function(i) {
        met<-data[data$metabolite==i, ]  #subset for metabolite i
        part1<-with(met, aov(area ~ treatment))
        print(part1)
        list( 
            part1 = part1,
            part2 = TukeyHSD(x=part1, 'treatment', conf.level=0.95)
        )
    })
    names(res)<-levels(data$metabolite)
    

    这将为您提供一个或多个列表,其中包含您要查找的部件。例如,您可以使用res[[_metabolite_]][[_part_]] 提取结果,例如...

    res[["x"]][["part1"]]
    res[["y"]][["part2"]]
    

    【讨论】:

      猜你喜欢
      • 2013-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多