簡體   English   中英

循環以在R中按行填充矩陣

[英]Loop to fill matrix by row in R

我知道這是一個非常基本的問題,但我似乎無法在任何地方找到直接答案。 我的真實代碼是在空間多邊形數據幀列表上執行一些計算,然后將計算的度量標准插入到預先分配的矩陣中。 我的問題是,當我再次循環后調用矩陣時,它仍然是空的。 我創建了玩具代碼來維護這個問題。

#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

問題是你在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

它更有效,因為你不在循環內生長矩陣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM