簡體   English   中英

While循環嵌套在R中的for循環中

[英]While Loop nested in a for loop in R

我有以下問題,我有此data.frame

MeanProb <-structure(list(spp = structure(c(1L, 2L, 4L, 3L, 5L, 6L, 7L, 
9L, 8L, 10L, 11L, 13L, 14L, 15L, 12L), .Label = c("ANPA", "EPFU", 
"EUMA", "EUPE", "LABL", "LACI", "LANO", "MYCA", "MYCI", "MYEV", 
"MYLU", "MYTH", "MYYU", "PAHE", "TABR"), class = "factor"), PSI = c(0.11, 
0.09, 1, 1, 0.28, 0.6, 0.49, 0.1, 0.82, 0.76, 0.73, 0, 0, 0.66, 
0.18), P = c(0.310400865105502, 0.407499355437779, 0.0260179560958289, 
0.00618257990834879, 0.201530599145313, 0.442993326882614, 0.653241682633141, 
0.392164812646201, 0.738867446144311, 0.644245184328625, 0.732752266966217, 
0.144457717963026, 0.028099503540885, 0.654181508254556, 0.299160511936956
), Days = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA)), .Names = c("spp", "PSI", "P", "Days"), row.names = c(NA, 
-15L), class = "data.frame")

我正在嘗試使用以下公式填充“天”列:

s = 1
a = 0
while (a < 0.95) {
    a <- (1-(1-0.3)^s)
    s = s+1
}
print(s)

這個想法是s將是Days,我想用MeanProb DataFrame的p值替換while循環中的0.3。 為了做到這一點,我嘗試在for循環中創建一個while循環,但它僅填充Days列的第一行:

s = 1
a = 0
for (i in 1:NROW(MeanProb)){
while (a < 0.95) {
  a <- (1-(1-MeanProb$P[i])^s)
  s = s+1
  MeanProb$Days[i] <- s
  }
}

但是,只會填充MeanProb $ Days的第一行。 我不知道我在做什么錯

for (i in 1:NROW(MeanProb)){
s = 1
a = 0
while (a < 0.95) {
  a <- (1-(1-MeanProb$P[i])^s)
  s = s+1
  MeanProb$Days[i] <- s
  }
}

因為對於每個新行,您都想從0開始,從1開始,所以我已經對其進行了測試; 有用。

暫無
暫無

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

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