NA
位于 base
包(package)。 说明
NA
是长度为 1 的逻辑常量,其中包含缺失值指示符。NA
可以强制转换为除原始向量之外的任何其他向量类型。也有常量NA_integer_
,NA_real_
,NA_complex_
和NA_character_
支持缺失值的其他原子向量类型:所有这些都是预订的中的单词R语言。
通用函数 is.na
指示缺少哪些元素。
通用函数 is.na<-
将元素设置为 NA
。
通用函数anyNA
以可能更快的方式实现any(is.na(x))
(特别是对于原子向量)。
用法
NA
is.na(x)
anyNA(x, recursive = FALSE)
## S3 method for class 'data.frame'
is.na(x)
is.na(x) <- value
参数
x |
一个R待测试对象:默认方法 |
recursive |
逻辑: |
value |
与 |
细节
字符类型的 NA
与字符串 "NA"
不同。需要指定显式缺失字符串的程序员应使用 NA_character_
(而不是 "NA"
)或使用 is.na<-
将元素设置为 NA
。
is.na
和 anyNA
是通用的:您可以编写方法来处理特定类的对象,请参阅 InternalMethods 。
函数 is.na<-
可能提供一种更安全的方法来设置缺失。例如,它对于因子的表现有所不同。
数值计算使用NA
通常会导致NA
:一个可能的例外是NaN
也涉及,在这种情况下可能会导致(这可能取决于R平台)。然而,这并不能得到保证,未来的 CPU 和/或编译器的行为可能会有所不同。动态二进制翻译也可能会影响这种行为(使用 valgrind,使用NA
可能会导致NaN
即使没有NaN
参与了)。
逻辑计算将 NA
视为缺失的 TRUE/FALSE
值,因此如果表达式不依赖于 NA
操作数,则可能返回 TRUE
或 FALSE
。
anyNA
的默认方法处理没有类的原子向量和 NULL
。它在具有类的对象上调用 any(is.na(x))
,在列表和配对列表上调用 recursive = FALSE
。
值
应用于原子向量的 is.na
的默认方法返回与其参数 x
长度相同的逻辑向量,其中包含 TRUE
对于标记为 NA
的元素,或者对于数字或复数向量,包含 NaN
,否则FALSE
。 (如果复数值的实部或虚部为 NA
或 NaN
,则复数值被视为 NA
。) dim
、 dimnames
和 names
属性将复制到结果中。
默认方法也适用于列表和配对列表:
为了is.na
,按元素计算结果为 false,除非该元素是长度为 1 的原子向量并且该向量的单个元素被视为NA
或者NaN
(请注意,任何is.na
元素类的方法被忽略)。
anyNA(recursive = FALSE)
工作方式与is.na
;anyNA(recursive = TRUE)
适用anyNA
(使用方法分派)到每个元素。
is.na
的数据帧方法返回一个与数据帧具有相同维度的逻辑矩阵,并且其暗名称取自数据帧的行和列名称。
anyNA(NULL)
是假的;is.na(NULL)
是logical(0)
(从此不再警告R版本 3.5.0)。
例子
is.na(c(1, NA)) #> FALSE TRUE
is.na(paste(c(1, NA))) #> FALSE FALSE
(xx <- c(0:4))
is.na(xx) <- c(2, 4)
xx #> 0 NA 2 NA 4
anyNA(xx) # TRUE
# Some logical operations do not return NA
c(TRUE, FALSE) & NA
c(TRUE, FALSE) | NA
## Measure speed difference in a favourable case:
## the difference depends on the platform, on most ca 3x.
x <- 1:10000; x[5000] <- NaN # coerces x to be double
if(require("microbenchmark")) { # does not work reliably on all platforms
print(microbenchmark(any(is.na(x)), anyNA(x)))
} else {
nSim <- 2^13
print(rbind(is.na = system.time(replicate(nSim, any(is.na(x)))),
anyNA = system.time(replicate(nSim, anyNA(x)))))
}
## anyNA() can work recursively with list()s:
LL <- list(1:5, c(NA, 5:8), c("A","NA"), c("a", NA_character_))
L2 <- LL[c(1,3)]
sapply(LL, anyNA); c(anyNA(LL), anyNA(LL, TRUE))
sapply(L2, anyNA); c(anyNA(L2), anyNA(L2, TRUE))
## ... lists, and hence data frames, too:
dN <- dd <- USJudgeRatings; dN[3,6] <- NA
anyNA(dd) # FALSE
anyNA(dN) # TRUE
参考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer.
也可以看看
NaN
、 is.nan
等,以及实用函数 complete.cases
。
相关用法
- R NotYet 尚未实现的函数和未使用的参数
- R NULL 空对象
- R NumericConstants 数字常量
- R file.path 构造文件路径
- R grep 模式匹配和替换
- R getwd 获取或设置工作目录
- R vector 向量 - 创建、强制等
- R lapply 对列表或向量应用函数
- R dump R 对象的文本表示
- R Sys.getenv 获取环境变量
- R rank 样本排名
- R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息
- R pushBack 将文本推回连接
- R strsplit 分割字符向量的元素
- R seq.Date 生成规则的日期序列
- R invisible 将打印模式更改为不可见
- R noquote “无引号”字符串打印类
- R warning 警告信息
- R rapply 递归地将函数应用于列表
- R basename 操作文件路径
- R with 评估数据环境中的表达式
- R formals 访问和操纵形式参数
- R icuSetCollate 按 ICU 设置整理
- R search 给出 R 对象的搜索路径
- R Defunct 将对象标记为已失效
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 ‘Not Available’ / Missing Values。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。