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