R 中 NA 元素向量的条件语句
If Any Conditional Statement for Vector of NA elements in R
我运行这个if (any())
条件语句在R
中,期望的结果如下:
a <- c(1, 4, 6, 3, 2)
b <- 9
d <- 0
if(any(a < b)) d = d + 1
d
# 1
我也在 R
中 运行 这个 if (any())
条件语句,期望的结果如下:
a <- c(NA, NA, NA, 3, 2)
b <- 9
d <- 0
if(any(a < b)) d = d + 1
d
# 1
但是这个if (any())
条件语句在R
运行s与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
的向量是必需的,因为我正在 运行 宁 for loop
并且在第一轮中,向量的元素不存在(缺失)但将是从第二个 运行.
开始填充
我想要的
我想要一种没有错误的方法。
也许我们可以用第一个表达式来检查a
中的all
个元素是否是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
}
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
我运行这个if (any())
条件语句在R
中,期望的结果如下:
a <- c(1, 4, 6, 3, 2)
b <- 9
d <- 0
if(any(a < b)) d = d + 1
d
# 1
我也在 R
中 运行 这个 if (any())
条件语句,期望的结果如下:
a <- c(NA, NA, NA, 3, 2)
b <- 9
d <- 0
if(any(a < b)) d = d + 1
d
# 1
但是这个if (any())
条件语句在R
运行s与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
的向量是必需的,因为我正在 运行 宁 for loop
并且在第一轮中,向量的元素不存在(缺失)但将是从第二个 运行.
我想要的
我想要一种没有错误的方法。
也许我们可以用第一个表达式来检查a
中的all
个元素是否是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
}
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