方差分析,for 循环应用函数 [英] Anova, for loop to apply function
本文介绍了方差分析,for 循环应用函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
>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 循环.在这种情况下有可能吗??
X can be very huge, so was thinking about an apply function instead of for-loop.Is it possible in this case??
我试过了:
apply(
as.matrix(X), 1, function(i){
summary(aov(as.formula(paste("dat~contrasts*",
paste(i, "Error(ID/(contrasts))", sep="+"))), data=set))
}
)
但这毫无意义.有人可以帮我吗?
But this makes no sense. Can anyone help me?
推荐答案
应该这样做:
# Sample data
set <- data.frame(ID=1:10, a=letters[1:10], b=LETTERS[1:10], c=letters[10:1],
dat=runif(10), contrasts=ordered(rep(1:2, 5)))
X <- letters[1:3] # a,b,c
sapply(X, function(my) {
f <- as.formula(paste("dat~contrasts*",my,"+Error(ID/(contrasts))"))
summary(aov(f, data=set))
}, simplify=FALSE)
注意 sapply 的使用和simple=FALSE.使用 lapply 也有效,但它不会向列表组件添加名称.
Note the use of sapply with simplify=FALSE. Using lapply also works, but it doesn't add names to the list components.
这篇关于方差分析,for 循环应用函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文