首页 > 解决方案 > 如何在数组和矩阵上使用应用族函数而不是 R 中的 for 循环?

问题描述

有没有办法在下面的代码中使用类似函数而不是 for 循环?

a <- array(rnorm(100,0,1), c(10, 5, 2)) ; a
b <- matrix(rnorm(20,0,1), 10, 2) ; b 

m <- matrix(NA, 10, 2) ; m
for (i in 1:2){ m[,i] <- fitted(lm(b[,i]~a[,,i])) }
m

非常感谢

标签: rfor-loopapply

解决方案


您可以在这里使用sapply/ lapply

m1 <- sapply(seq_len(ncol(b)), function(i) fitted(lm(b[,i]~a[,,i])))

seq_len(ncol(b))创建一个序列,该序列与您的循环和循环内的代码1:ncol(b)相似,并且保持不变。1:2forforsapply


推荐阅读