我正在尝试像这样创建空的数字对象
corr <- cor()
稍后在循环中使用它。
但是,它不断返回此错误
Error in is.data.frame(x) : argument "x" is missing, with no default
。这是我的完整脚本:
EVI <- "D:\\Modis_EVI\\Original\\EVI_Stack_single5000.tif"
y.EVI <- brick(EVI)
m.EVI.cropped <- as.matrix(y.EVI)
time <- 1:nlayers(y.EVI)
corr <- cor()
inf2NA <- function(x) { x[is.infinite(x)] <- NA; x }
for (i in 1:nrow(m.EVI.cropped)){
EVI.m <- m.EVI.cropped[i,]
time <- 1:nlayers(y.EVI)
Corr[i] <- cor(EVI.m, time, method="pearson", use="pairwise.complete.obs")
}
有什么建议吗?
最佳答案
由于您正在寻求建议:
您很有可能不需要这样做,因为您可以使用(i)向量化函数或(ii)为您预分配返回对象的lapply
循环。如果您坚持使用for
循环,请正确设置它。这意味着您应该预先分配您可以进行的分配,例如使用corr <- numeric(n)
,其中n
是迭代次数。附加到向量非常容易。