用函数输出R填充矩阵

时间:2017-07-04 17:03:50

标签: r function matrix

我正在尝试用矩阵的每个实例处的函数输出填充矩阵。我得到错误“替换长度为零”或“要替换的项目数不是替换长度的倍数”。

请帮忙!

setPoint <- function(tarray, t){
    var1 <- dim(tarray)[1] #get the length of longitudes, returns a number
    var2 <- dim(tarray)[2] #get the length of latitudes, returns a number
    empty.matrix <- matrix(nrow=var1,ncol=var2)
    for (i in 1:var1) { #i is moving from 1 to 192 (longitude)
        for (j in 1:var2) { #j moves from 1 to 145 (latitude) 
            tmp.point <- tarray[i,j,]
            1my.vector <- c(1:var2)
            my.vector[j] <- thresholdYear(tmp.point, 38,t,0.8)
        }
        empty.matrix[i,] <- my.vector
    }

}

1 个答案:

答案 0 :(得分:0)

首先,你的函数什么都不返回。 R中的for循环返回NULL,这就是函数返回的内容。 其次,在内部循环中创建my.vector并在下一条指令中重写其中一个值。通过循环的第二次迭代,你重新创建它,因此破坏了前一次迭代的值,等等。在我看来,你需要做的是在内部循环之外创建它。如下所示。

setPoint <- function(tarray, t){
var1 <- dim(tarray)[1] #get the length of longitudes, returns a number
var2 <- dim(tarray)[2] #get the length of latitudes, returns a number
empty.matrix <- matrix(nrow=var1,ncol=var2)
for (i in 1:var1) { #i is moving from 1 to 192 (longitude)
      my.vector <- 1:var2
    for (j in 1:var2) { #j moves from 1 to 145 (latitude) 
        tmp.point <- tarray[i,j,]
        my.vector[j] <- thresholdYear(tmp.point, 38,t,0.8)
    }
    empty.matrix[i,] <- my.vector
}
empty.matrix

}