问
这么简单的问题我觉得很愚蠢,但我似乎找不到方法,尽管我确信有很多方法。解释我的问题的最简单方法可能是展示一个示例,我有一些我想要应用的程序。
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
是正确的;即使是正确的,也有更好的方法来做它所做的事情。以及除了循环之外的其他方法,您可以做您想做的事情。