[英]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.