循环以在R中按行填充矩阵

时间:2016-11-27 23:38:52

标签: r loops matrix row

我知道这是一个非常基本的问题,但我似乎无法在任何地方找到直接答案。我的真实代码是在空间多边形数据帧列表上执行一些计算,然后将计算的度量标准插入到预先分配的矩阵中。我的问题是,当我再次循环后调用矩阵时,它仍然是空的。我已经创建了可以解决这个问题的玩具代码。

#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

1 个答案:

答案 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

它更高效,因为你不在循环中增长矩阵。