r - 删除列表中矩阵的 NA 行
问题描述
我认识到这个问题可能是重复的。
我有一个矩阵列表,对于每个矩阵,我想确定第一列中是否存在 NA。如果存在 NA,我想确定它的位置(行)并删除该行。我想将此操作应用于列表中的所有矩阵。
mat1 <- data.frame(matrix(nrow =2, ncol =2, data = c(NA, 0,0,1)))
mat2 <- data.frame(matrix(nrow =2, ncol =5, data = c(0,0,1,2,1,NA,1,1,1,1)))
mat3 <- data.frame(matrix(nrow =3, ncol =2, data = c(NA, 0,0,1,NA,1)))
list <- list(mat1,mat2,mat3)
lapply(list, function(x) !is.na(x[,1]))
我希望将输出存储在等效列表中(例如 list2)。例如 list2[[1]] 将是一个 1x2 矩阵。list2[[2]] 将是一个 1x5 矩阵。并且列表 2[[3]] 将是一个 1x2 矩阵(仅在第 1 列中保留没有 NA 的行)
解决方案
如果它仅用于第一列,我们遍历list
with lapply
,然后使用 an。匿名函数调用x[,1]
,获取第一列NA
(在那is.na
!
list2 <- lapply(list, function(x) x[!is.na(x[,1]),, drop = FALSE])
对于 中的整个数据集list
,我们可以利用在整个数据集上rowSums
创建的逻辑矩阵is.na
。
lapply(list, function(x) x[rowSums(is.na(x)) == 0,, drop = FALSE])
推荐阅读
- sql - 对于每位员工,他们在 2018 年处理了多少个工单?
- spring-boot - @FeignClient 和 @EurekaClient 的区别
- php - PHP注意:调用API到PHP页面时未定义的变量
- rust - Rust 中不匹配的字符串类型
- flutter - 如何实现嵌套在ui中的json数组flutter
- linux - 如何 git 克隆/签出标签哈希并仅提取指定的文件夹/文件?
- android - 在android中发送带有特殊字符的USSD代码
- javascript - 如何在 d3 中增加日期轴的范围?
- python - Django-import-export 总是导入空值
- javascript - 转换为base64后如何将画布图像插入数据库