r语言 - 如何使循环不覆盖结果



这么简单的问题我觉得很愚蠢,但我似乎找不到方法,尽管我确信有很多方法。解释我的问题的最简单方法可能是展示一个示例,我有一些我想要应用的程序。

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)

这样,当我运行包含函数的 a for 循环时,我可以执行程序 i 次,每次输出都转到矩阵中的不同列。我已经尝试过类似的东西和几个类似的"版本",但没有运气。

for (i in 1:3)(
r <- matrix()
r[re,i] <- re <- FUN(matrix[,i], v2, v3))

谁能帮我?

r <- matrix(ncol=3, nrow=10)
for (i in 1:3) {
  r[,i] <- FUN(matrix[,i], v2, v3)
}
在循环

外部声明矩阵,并且每次循环迭代只需填写一列。

(这假设FUN是正确的;即使是正确的,也有更好的方法来做它所做的事情。以及除了循环之外的其他方法,您可以做您想做的事情。

最新更新