在R

时间:2016-08-04 07:16:18

标签: r object

我正在尝试创建像这样的空数字对象

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")
}

请问任何建议?

2 个答案:

答案 0 :(得分:3)

我们可以使用numeric(0)logical(0)character(0)等创建空对象。

例如

num_vec <- numeric(0)

创建一个空的数字向量,可以在以后填写:

num_vec[1] <- 2
num_vec
# [1] 2
num_vec[2] <- 1
num_vec
# [1] 2 1

答案 1 :(得分:3)

因为您在寻求建议:

您很可能不需要这样做,因为您可以使用(i)向量化函数或(ii)为您预先分配返回对象的lapply循环。如果您坚持使用for循环,请正确设置。这意味着您应该预先分配哪个,例如,使用corr <- numeric(n),其中n是迭代次数。附加到矢量是非常slooooooow。