首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Anova,for循环应用函数

Anova,for循环应用函数
EN

Stack Overflow用户
提问于 2011-07-08 15:18:13
回答 1查看 4.6K关注 0票数 4
代码语言:javascript
复制
>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-loop.在这种情况下可能吗?

我试过这个:

代码语言:javascript
复制
apply(
  as.matrix(X), 1, function(i){
    summary(aov(as.formula(paste("dat~contrasts*",
      paste(i, "Error(ID/(contrasts))", sep="+"))), data=set))
  }
)

但这没有任何意义。有谁可以帮我?

EN

回答 1

Stack Overflow用户

发布于 2011-07-08 23:29:22

这应该可以做到:

代码语言:javascript
复制
# 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与simplify=FALSE的配合使用。使用lapply也可以,但它不会将名称添加到列表组件中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6621188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档