我有一個完全可以自己運行的回圈。我基本上想要做的是重復相同的回圈 100 次以上,以填充比原始矩陣大 100 倍的矩陣。
nsite - 267
nyear - 14
#pred.occ is a data.frame of 14 columns and 267 rows
z_pred <- array(NA, dim = c(nsite, 4*100)) # my matrix
for (i in 1:100) {
# Generate presence/absence (i.e., the truth) in subsequent years
for(t in 11:nyear){
z_pred[,t*i] <- rbinom(n = nsite, size = 1, prob = pred.occ[,11:nyear])
}
sum_occupancy <- apply(z_pred, 2, sum) / nsite # predicted occupancy proportion
}
我得到的錯誤是“下標越界”但我試圖修改但我不確定我哪里出錯了。
uj5u.com熱心網友回復:
我認為這里發生了很多事情。
- 首先,您的矩陣 z_pred 的維度為 267,400,但您在最內層回圈中的呼叫試圖分配給該矩陣中不存在的列。例如,
t=11您i=40將嘗試分配給第 440 列的時間。 - 您正在嘗試將大小為 267x4 的資料框傳遞給 rbinom 函式的 prob 引數。我認為您在這里要做的是通過列中的 267 個概率
t
這是一個可能對您有所幫助的修訂版
z_pred <- array(NA, dim = c(nsite, 4*100)) # my matrix
for (i in 1:100) {
# Generate presence/absence (i.e., the truth) in subsequent years
for(t in 11:nyear) {
z_pred[,100*(t-11) i] <- rbinom(n = nsite, size = 1, prob =pred.occ[,t])
}
sum_occupancy <- apply(z_pred, 2, sum) / nsite # predicted occupancy proportion
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/465254.html
上一篇:如何在C 中從右到左撰寫陣列
