&引用;或;带NA和空白的r中的条件
我最近看到了一个我不明白的问题。给你:&引用;或;带NA和空白的r中的条件,r,conditional-statements,na,missing-data,nonblank,R,Conditional Statements,Na,Missing Data,Nonblank,我最近看到了一个我不明白的问题。给你: x <- c(1,2,3,4,45,654,3,NA," ",8,5,64,54) 我希望if函数返回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
x <- c(1,2,3,4,45,654,3,NA," ",8,5,64,54)
我希望if
函数返回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)[1] || (x == " ")[1]
## [1] FALSE
其中,|
的两侧在上行中均为FALSE
如果您试图确定任何元素是NA
还是”
,则
anyNA(x) || ( " " %in% x )
## [1] TRUE
您也可以对右手侧使用any(x==“”)
,但这只起作用,因为我们知道,如果由于左手侧存在任何NA
值,并且如果左手侧为TRUE,则|
从不运行|
的右手侧,则不会执行右手侧(短路)。如果x
完全NA
,则any(x==”)
将等于NA
,而不是TRUE
或FALSE
,这使得左侧的NA
测试非常重要
(请注意,|
是不同的。它不会短路。在执行|
之前对两侧进行评估。)请注意,|
的两侧都是向量
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)[1] || (x == " ")[1]
## [1] FALSE
其中,|
的两侧在上行中均为FALSE
如果您试图确定任何元素是NA
还是”
,则
anyNA(x) || ( " " %in% x )
## [1] TRUE
您也可以对右手侧使用any(x==“”)
,但这只起作用,因为我们知道,如果由于左手侧存在任何NA
值,并且如果左手侧为TRUE,则|
从不运行|
的右手侧,则不会执行右手侧(短路)。如果x
完全NA
,则any(x==”)
将等于NA
,而不是TRUE
或FALSE
,这使得左侧的NA
测试非常重要
(请注意,|
是不同的。它不会短路。在执行|
之前,会对两侧进行评估。)如果
只在长度为1的条件下工作,就像在大多数编程语言中一样。请注意,是.na(x)
比长度1长得多,所以…这里的目标是什么?也许如果其他就是你需要的,将它与任何,如果(任何(is.na(x)| x==”)
@user95902用于相同的输入,我得到的是真的,你是在使用
还是||。。我已经使用了
@not u a|u机器人如果(condition){TRUE}else{FALSE}
是编写条件的一个很长的过程,如果
只在长度为1的条件下工作,就像在大多数编程语言中一样。请注意是.na(x)
比长度1长得多,所以…这里的目标是什么?也许如果其他就是你需要的,将它与任何,如果(任何(is.na(x)| x==”)
@user95902用于相同的输入,我得到的是真的,你是在使用
还是||。。我已经使用了
@not u a|u机器人如果(条件){TRUE}否则{FALSE}
写条件是很长的一段路
谢谢!这回答了我的问题!谢谢!这回答了我的问题!