我以期望的結果運行了這個if (any())條件陳述句,R如下所示:
a <- c(1, 4, 6, 3, 2)
b <- 9
d <- 0
if(any(a < b)) d = d 1
d
# 1
我還運行了這個if (any())條件陳述句,R結果如下:
a <- c(NA, NA, NA, 3, 2)
b <- 9
d <- 0
if(any(a < b)) d = d 1
d
# 1
但是這個if (any())條件陳述句R運行error message如下:
a <- c(NA, NA, NA, NA, NA)
b <- 9
d <- 0
if(any(a < b)) d = d 1
d
# Error in if (any(a < b)) d = d 1 :
# missing value where TRUE/FALSE needed
的向量NA是必要的,因為我正在運行 afor loop并且在第一輪,向量的元素不存在(缺失),但將從第二輪運行開始填充。
我想要的是
我想要一種沒有錯誤的方法。
uj5u.com熱心網友回復:
any具有na.rm可以設定為TRUE忽略NA值的引數。
a <- c(NA, NA, NA, NA, NA)
b <- 9
d <- 0
if(any(a < b, na.rm = TRUE)) d = d 1
d
#[1] 0
uj5u.com熱心網友回復:
也許我們可以有第一個運算式來檢查all元素a是否NA存在,在else if部分中,我們指定a < b.
if (all(is.na(a))) d = d else if (any(a < b)) d = d 1
# or better formatted
if (all(is.na(a))) {
d = d
} else if (any(a < b)) {
d = d 1
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460987.html
上一篇:過濾資料,但每個ID至少保留一行
