簡體   English   中英

R double for 循環列表

[英]R double for loop over a list

當我為一個巨大的列表創建 double for 循環時,我遇到了麻煩,代碼如下:

bootk=0
bias=0
Nk=0
#datalist = list()
for (i in 1:ksign){
for (j in 1:boottime){
    if (i<=ksign1[j]){
        bias[i]=bias[i]+(bigmatrix[,j]$V1.x[i]-bigmatrix[,j]$V1.y[i])
        Nk[i]=Nk[i]+1
        
      }
    }
  }

ksign 和 boottime 在這里只是 2 個數字。 bigmatrix 就像一個巨大的列表:

          [,1]          [,2]          [,3]          [,4]          [,5]         
Row.names Character,269 Character,266 Character,283 Character,273 Character,270
V1.x      Numeric,269   Numeric,266   Numeric,283   Numeric,273   Numeric,270  
V2.x      Numeric,269   Numeric,266   Numeric,283   Numeric,273   Numeric,270  
V1.y      Numeric,269   Numeric,266   Numeric,283   Numeric,273   Numeric,270  
V2.y      Numeric,269   Numeric,266   Numeric,283   Numeric,273   Numeric,270  

這是幾個列表的組合取決於boottime的值。 這里我定義為5。但是我運行代碼后,輸出是這樣的:

bias
  [1] 2.521886       NA       NA       NA       NA       NA       NA       NA
  [9]       NA       NA       NA       NA       NA       NA       NA       NA
 [17]       NA       NA       NA       NA       NA       NA       NA       NA
 [25]       NA       NA       NA       NA       NA       NA       NA       NA
 [33]       NA       NA       NA       NA       NA       NA       NA       NA

我應該有一個偏差列表,其中的數字是 ksign 的值。 這里發生了什么? 有任何想法嗎?

問題是偏差沒有初始化為向量,而是作為標量:

bias <- 0
bias[1] <- bias[1] + 2  # ok: bias[1] == bias
bias[2] <- bias[2] + 3  # not ok: bias[2] is uninitialized and thus NA

導致偏差(2 NA)

暫無
暫無

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

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