这里是一个向量
a <- c(TRUE, FALSE, FALSE, NA, FALSE, TRUE, NA, FALSE, TRUE)
我希望有一个简单的函数,每当在“a”中出现TRUE
时,它返回TRUE
,每当在“a”中出现FALSE
或NA
时,它返回FALSE
。
以下三个方法都无法实现此功能。
a == TRUE
identical(TRUE, a)
isTRUE(a)
这是一个解决方案
a[-which(is.na(a))]
但似乎并没有一个直接简单的解决方案。
还有其他解决方案吗?
以下是我所知道的一些函数(和运算符):
identical()
isTRUE()
is.na()
na.rm()
&
|
!
还有哪些其他函数(操作符、技巧等等)对于处理
TRUE
、FALSE
、NA
、NaN
很有用?NA
和NaN
之间有什么区别?除了
TRUE
、FALSE
、NA
和NaN
,还有其他的“逻辑事物”吗?
非常感谢!
Vectorize(isTRUE)(a)
。该代码将向量a中的每个元素应用函数isTRUE,并返回一个逻辑型向量,表示每个元素是否为TRUE。 - Matthew Plourde!is.na(x) & x
应该可以工作,只要你期望的值确实包含在 {TRUE
,FALSE
,NA
,NaN
} 中... - Ben BolkerNA
vsNaN
,isTRUE
vsis.na
等)可能已经在其他地方/以前讨论过,甚至可能在StackOverflow上。通过谷歌搜索“na nan is.finite is.nan is.na”可以找到http://stat.ethz.ch/R-manual/R-devel/library/base/html/is.finite.html,但奇怪的是它没有与http://stat.ethz.ch/R-manual/R-devel/library/base/html/NA.html相关的“参见”。 - Ben Bolkera[-which(is.na(a))]
只有7个元素,而a
有9个元素。您确定这就是您想要的吗?也许sapply(a, isTRUE)
才是您想要的? - G. GrothendieckT
和F
并不等同于TRUE
和FALSE
;也就是说,它们不是保留字,可以随时被用户重新定义。这意味着你需要小心对待它们;例如,T <- FALSE
可能会让你的一天变得糟糕。 - Jason Morgan