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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
