gpt4 book ai didi

r - 方差分析,for 循环应用函数

转载 作者:行者123 更新时间:2023-12-04 11:51:45 25 4
gpt4 key购买 nike

>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))
}
)

但这毫无意义。谁能帮我?

最佳答案

这应该这样做:

# 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 也有效,但它不会向列表组件添加名称。

关于r - 方差分析,for 循环应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6621188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com