"OR" r 中的条件为 NA 和空白
"OR" condition in r with NA and blank
最近看到一道题,不懂。在这里你有:
x <- c(1,2,3,4,45,654,3,NA," ",8,5,64,54)
并且 r
中的 ||
条件不符合我的兴趣:识别 NA 和空白:
if(is.na(x) || x==" ") {...}
我期待 if
功能 return TRUE
但它是 FALSE
。有人可以帮我理解这个问题吗?谢谢!
编辑:
抱歉,我打算在 if
语句中使用参数,因此长度应为 1。|
不适用于此处。
注意||
两边都是向量
x <- c(1,2,3,4,45,654,3,NA," ",8,5,64,54)
is.na(x)
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x == " "
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
如果任一侧是矢量,那么它只使用它的第一个元素,所以
is.na(x) || x == " "
## [1] FALSE
等同于:
is.na(x)[1] || (x == " ")[1]
## [1] FALSE
其中 ||
的两边是上一行中的 FALSE
。
如果您要确定任何元素是 NA
还是 " "
,则
anyNA(x) || ( " " %in% x )
## [1] TRUE
您也可以对右侧使用 any(x == " ")
但这只有效,因为我们知道如果左侧有任何 NA
值,右侧将不会被执行side 和事实 ||
如果左侧是 TRUE
(短路),则 ||
永远不会运行 ||
的右侧。如果 x
完全是 NA
那么 any(x == " ")
将等于 NA
而不是 TRUE
或 FALSE
这使得 NA
的测试左边很重要。
(注意|
是不同的,它不短路,在|
执行前两边都求值。)
最近看到一道题,不懂。在这里你有:
x <- c(1,2,3,4,45,654,3,NA," ",8,5,64,54)
并且 r
中的 ||
条件不符合我的兴趣:识别 NA 和空白:
if(is.na(x) || x==" ") {...}
我期待 if
功能 return TRUE
但它是 FALSE
。有人可以帮我理解这个问题吗?谢谢!
编辑:
抱歉,我打算在 if
语句中使用参数,因此长度应为 1。|
不适用于此处。
注意||
两边都是向量
x <- c(1,2,3,4,45,654,3,NA," ",8,5,64,54)
is.na(x)
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
x == " "
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
如果任一侧是矢量,那么它只使用它的第一个元素,所以
is.na(x) || x == " "
## [1] FALSE
等同于:
is.na(x)[1] || (x == " ")[1]
## [1] FALSE
其中 ||
的两边是上一行中的 FALSE
。
如果您要确定任何元素是 NA
还是 " "
,则
anyNA(x) || ( " " %in% x )
## [1] TRUE
您也可以对右侧使用 any(x == " ")
但这只有效,因为我们知道如果左侧有任何 NA
值,右侧将不会被执行side 和事实 ||
如果左侧是 TRUE
(短路),则 ||
永远不会运行 ||
的右侧。如果 x
完全是 NA
那么 any(x == " ")
将等于 NA
而不是 TRUE
或 FALSE
这使得 NA
的测试左边很重要。
(注意|
是不同的,它不短路,在|
执行前两边都求值。)