r - 如何检查数据框的每个元素的 NA 并单独打印它们的位置(而不是作为向量)
问题描述
我正在尝试在数据框中提供 NA 的自动报告:
#####create data frame
expl_data1 <- data.frame(var1 = c(NA, 7, 8, 9, 3),
var2 = c(4, 1, NA, NA, 4),
var3 = c(1, 4, 2, 9, 6),
var4 = c("Hello", "I am not NA", NA, "I love R", NA))
#####check each element for NA
out<-apply(is.na(expl_data1), 2, which)
####print a message with the NA's position
for (i in 1:length(out)){
if (out[i] != "integer(0)"){
print(paste("Please remove missing values from ",names(out[i]), ", line ", out[i], sep= ""))
}
}
打印的内容:
> [1] "Please remove missing values from var1, line 1"
> [1] "Please remove missing values from var2, line 3:4"
> [1] "Please remove missing values from var4, line c(3, 5)"
如果列中只有一个 NA,则输出很好。但是我对多个 NA 的输出不满意。如何单独访问和打印职位?我想要的是
> [1] "Please remove missing values from var1, line 1"
> [1] "Please remove missing values from var2, line 3"
> [1] "Please remove missing values from var2, line 4"
> [1] "Please remove missing values from var4, line 3"
> [1] "Please remove missing values from var4, line 5"
解决方案
您可以使用arr.ind
fromwhich
获取行和列的索引:
na_pos <- which(is.na(expl_data1), arr.ind = TRUE)
paste("Please remove missing values from row", apply(na_pos, 1, paste, collapse = ", line "))
推荐阅读
- gradle - 在 Liferay DXP Gradle 中启用传递依赖
- python-3.x - 在 mpi 代码中运行 python 时如何处理 python 解释器运行时错误
- mongodb - 由于 CodecConfigurationException,Scala Spark 作业将 CSV 文件数据上传到 mongo DB 失败
- mrtk - 如何使最新的 SpectatorView 与 MRTK RC2 一起使用?
- visual-studio - Nuget 包安装在项目解决方案之外
- r - 当反应输入为空时,ggplot 不会将级别用于 x 轴顺序
- three.js - 片段着色器 gl_FragColor 中的 Alpha 不起作用
- sql - 通过 Access 数据库优化循环
- vue.js - Vue路由器视图不显示孩子
- javascript - 重新渲染页面后点击事件不会被触发