我觉得愚蠢地问这么简单的问题,但我似乎无法找到办法,虽然我确信有很多办法。解释我的问题最简单的方法可能是展示一个例子,我有一些我想要应用的程序。
FUN<- function(v1, v2, v3){
n=length(v1)
res <- vector()
for (i in 1:n){
if(v1[i]>v2[i]) (res[i] <- v3[i+2])
else(res[i] <- v1[i+2])}
return(res)}
输入是两个向量和一个矩阵,都是相同的长度
matrix <- matrix(runif(30),ncol=3)
v2 <- runif(10)
v3 <- rnorm(10)
因此,当我运行包含函数的for循环时,我可以执行程序i
次,每次输出转到矩阵中的不同列。我尝试了类似的东西和几个类似的“版本”,但没有运气。
for (i in 1:3)(
r <- matrix()
r[re,i] <- re <- FUN(matrix[,i], v2, v3))
有人可以帮助我吗?
答案 0 :(得分:1)
r <- matrix(ncol=3, nrow=10)
for (i in 1:3) {
r[,i] <- FUN(matrix[,i], v2, v3)
}
在循环外声明你的矩阵,每次循环迭代只填充一列。
(这假设FUN
是正确的;即使它是正确的,也有更好的方法来完成它的工作。还有其他方法可以做你想做的事情而不是循环。)