我正在尝试用矩阵的每个实例处的函数输出填充矩阵。我得到错误“替换长度为零”或“要替换的项目数不是替换长度的倍数”。
请帮忙!
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
}
}
答案 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
}