我必须对数据框 ddf 的所有列组合执行函数。我通常这样做:
myfunction <- function(col1, col2) {print(aov(col1~col2))}
ddf = data.frame(first=1:3, second=letters[1:3], third=LETTERS[1:3])
len = length(ddf)
for(i in 1:len) for(j in 1:len) myfunction(ddf[,i], ddf[,j])
[1] "1 1"
[1] "1 a"
[1] "1 A"
[1] "a 1"
[1] "a a"
[1] "a A"
[1] "A 1"
[1] "A a"
[1] "A A"
在这种情况下如何避免使用“for”循环?我尝试申请,但一次只需要一列:
apply(ddf, 2, myfunction)
感谢您的帮助。
您可以使用outer
使用函数的向量化版本mapply
.
id <- seq_along(colnames(ddf))
outer(id,id,function(x,y)mapply(myfunction,ddf[,x],ddf[,y]))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)