检测向量在R中是否至少有1NA的最快方法是什么?我一直在使用:

sum( is.na( data ) ) > 0

但这需要判断每个元素、强制和求和函数.

推荐答案

从R3.1.0开始,anyNA()就是实现这一点的方法.在原子向量上,这将在第一个NA之后停止,而不是像any(is.na())那样穿过整个向量.此外,这避免了创建一个包含is.na的中间逻辑向量,该向量会立即被丢弃.borrow 乔兰的例子:

x <- y <- runif(1e7)
x[1e4] <- NA
y[1e7] <- NA
microbenchmark::microbenchmark(any(is.na(x)), anyNA(x), any(is.na(y)), anyNA(y), times=10)
# Unit: microseconds
#           expr        min         lq        mean      median         uq
#  any(is.na(x))  13444.674  13509.454  21191.9025  13639.3065  13917.592
#       anyNA(x)      6.840     13.187     13.5283     14.1705     14.774
#  any(is.na(y)) 165030.942 168258.159 178954.6499 169966.1440 197591.168
#       anyNA(y)   7193.784   7285.107   7694.1785   7497.9265   7865.064

请注意,即使我们修改向量的最后一个值,它的速度也会大大加快;这部分是因为避免了中间逻辑向量.

R相关问答推荐

如何通过Exams2黑板对非整数字的问题进行评分

在集合群体模型中计算时间步依赖的速率/参数

如何使用文本表达来子集数据

有没有一种方法可以在子包上使用‘library()’中的‘exclub’参数?

如何在热图中绘制一个图形,但在每个单元格中通过饼形图显示?

使用ggcorrplot在相关性矩阵上标注supertitle和index标签

更改默认系列1以更改名称

修改用R编写的用户定义函数

在R中将特定列的值向右移动

移除仪表板Quarto中顶盖和车身之间的白色区域

在ggplot中为不同几何体使用不同的 colored颜色 比例

将文件保存到新文件夹时,切换r设置以不必创建目录

打印XTS对象

SHINY:使用JS函数应用的CSS样式显示HTML表格

哪一行和行和 Select 特定行,但是考虑到Nas

条形图顶部与其错误条形图不对齐

将向量元素重新排序为R中的第二个

如何使这些react 表对象相互独立?

自动STAT_SUMMARY统计与手动标准误差之间的差异

在ggplot2图表中通过端点连接点