下面是我的数据的一个示例:
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对B,A对C,B对C代谢物Y:A对B,A对C,B对C代谢物Z:A对B,A对C,B对C
我需要在R中执行Tukey‘Tukey (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)
} `救命,拜托!
发布于 2014-05-08 00:53:13
实际上,您从未尝试使用正在循环的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"]]https://stackoverflow.com/questions/23530162
复制相似问题