【发布时间】:2011-10-01 01:27:47
【问题描述】:
>str(set)
'data.frame': 1000 obs. of 6 variables:
$ ID : Factor ..
$ a : Factor ..
$ b: Factor ..
$ c: Factor ..
$ dat : num ..
$ contrasts : Ord.factor ..
>X
[1] "a" "b" "c"
for (i in 1 :length(X) ){
my=X[i]
f=as.formula(paste("dat~contrasts*", paste(my,"Error(ID/(contrasts))",sep="+")))
sum = summary( aov (f, data =set))
}
X 可能非常大,所以考虑使用应用函数而不是 for 循环。在这种情况下可能吗?
我试过了:
apply(
as.matrix(X), 1, function(i){
summary(aov(as.formula(paste("dat~contrasts*",
paste(i, "Error(ID/(contrasts))", sep="+"))), data=set))
}
)
但这没有任何意义。谁能帮帮我?
【问题讨论】:
-
如果
X是一个向量,那么sapply更合适,但这本质上只是一种更好的方式来编写你的for循环,它实际上不会加速你的代码。 -
@Ashley :很高兴您提供了 str() 信息,但如果您给我们一些玩具数据集来玩会更好。另见stackoverflow.com/questions/5963269/…
标签: r loops for-loop apply anova