我知道这是一个非常基本的问题,但我似乎无法在任何地方找到直接答案。我的真实代码是在空间多边形数据帧列表上执行一些计算,然后将计算的度量标准插入到预先分配的矩阵中。我的问题是,当我再次循环后调用矩阵时,它仍然是空的。我已经创建了可以解决这个问题的玩具代码。
#create the columns to be filled
empty<-matrix(,nrow=4,ncol=3)
colnames(empty)<-c("NF", "PF", "AA")
lapply(1:4, function(x){
NF<-2
#Proportion of forest
PF<- 4
#Average fragment area
AA<- 6
#plug them into my awaiting columns
empty[x,]<-c(NF, PF, AA)
})
head(empty)
返回
NF PF AA
[1,] NA NA NA
[2,] NA NA NA
[3,] NA NA NA
[4,] NA NA NA
答案 0 :(得分:0)
问题是你在lapply
内填写了不起作用的矩阵。你可以这样做:
l <- lapply(1:4, function(x){
NF<-2
PF<- 4
AA<- 6
c(NF, PF, AA)
})
m <- matrix(unlist(l), ncol = 3, byrow = T)
colnames(m) <- c("NF", "PF", "AA")
# NF PF AA
#[1,] 2 4 6
#[2,] 2 4 6
#[3,] 2 4 6
#[4,] 2 4 6
它更高效,因为你不在循环中增长矩阵。