使用 R 中的条件从列表中的每个数据框中删除行

标签 r list

我有这样一个列表:

df1 <- data.frame(a=c(NA, NA, 1:10), b=c(NA, 1:11))
df2 <- data.frame(a=1:10, b=c(NA,1:9))
mylist <- list(df1, df2)

> mylist
[[1]]
    a  b
1  NA NA
2  NA  1
3   1  2
4   2  3
5   3  4
6   4  5
7   5  6
8   6  7
9   7  8
10  8  9
11  9 10
12 10 11

[[2]]
    a  b
1   1 NA
2   2  1
3   3  2
4   4  3
5   5  4
6   6  5
7   7  6
8   8  7
9   9  8
10 10  9

我想删除每个数据框中连续超过 1 个 NA 的所有行。我该怎么做?

我找到了如何删除行

lapply(mylist, `[`, -1,)

以及如何计算NA的总和

NAsums <- function(x) {rowSums(is.na(x))}
lapply(mylist, NAsums)

但我不知道如何将这两个步骤结合起来..

最佳答案

我们遍历 list ( lapply ), 使用 rowSums获取每行中 NA 元素的数量,转换为逻辑向量 ( <2 ),并使用它对行进行子集化。

lapply(mylist, function(x) x[rowSums(is.na(x))<2,])
#[[1]]
#    a  b
#2  NA  1
#3   1  2
#4   2  3
#5   3  4
#6   4  5
#7   5  6
#8   6  7
#9   7  8
#10  8  9
#11  9 10
#12 10 11

#[[2]]
#    a  b
#1   1 NA
#2   2  1
#3   3  2
#4   4  3
#5   5  4
#6   6  5
#7   7  6
#8   8  7
#9   9  8
#10 10  9

关于使用 R 中的条件从列表中的每个数据框中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33301267/

相关文章:

r - 将行转换为列,根据另一列使用后缀重复列名

r - 如何在没有数据的类别上强制执行ggplot的position_dodge?

r - 如何在不更改绘图位置的情况下从 igraph 中删除顶点

cocoa - cocoa 中的自定义列表控件

python - 从列表中获取相关词典

python - 获取二维网格(多维列表)中具有最大值的所有图 block

python - 在列表理解生成器中扩展元组

R Shapefile 未正确绘制纬度/经度

java - 如何访问列表中对象的方法

java - 从 R (Renjin) 中的字符串表达式获取变量名称