如何从列表的数据框中删除NA? [英] How to remove NA from data frames of a list?

查看:73
本文介绍了如何从列表的数据框中删除NA?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个看起来像这样的 my.list 列表

I have a list of my.list that looks like this

$S1

        A     B     C         D
1  101027    NA  0.48        NA
2  101031  1.50  1.30 0.8666667
3  101032  1.40  0.78 0.5571429
4  101127    NA    NA        NA
5  101220  9.30  7.30 0.7849462

$S2

        A     B     C         D
1  102142    NA  0.45        NA
2  102143  0.70  1.20 1.7142857
3  102144    NA  0.44        NA
4  102148  0.45    NA        NA
5  102151  0.91  0.64 0.7032967
6  102152  0.78    NA        NA

我想从列表的数据框中删除所有具有 NA 的行,使它看起来像

I would like to remove any rows that have NA from the data frame of the list so it looks like

$S1

        A     B     C         D
2  101031  1.50  1.30 0.8666667
3  101032  1.40  0.78 0.5571429
5  101220  9.30  7.30 0.7849462

$S2

        A     B     C         D
2  102143  0.70  1.20 1.7142857
5  102151  0.91  0.64 0.7032967

我尝试了

mod_my.list = my.list[!sapply(my.list, is.na)]

,但没有用.有人可以帮忙吗?谢谢!

and it didn't work. Could anyone help? Thanks!

可复制的数据:

my.list <- structure(list(S1 = structure(list(A = c(101027L, 101031L, 101032L, 
101127L, 101220L), B = c(NA, 1.5, 1.4, NA, 9.3), C = c(0.48, 
1.3, 0.78, NA, 7.3), D = c(NA, 0.8666667, 0.5571429, NA, 0.7849462
)), .Names = c("A", "B", "C", "D"), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5")), S2 = structure(list(A = c(102142L, 102143L, 
102144L, 102148L, 102151L, 102152L), B = c(NA, 0.7, NA, 0.45, 
0.91, 0.78), C = c(0.45, 1.2, 0.44, NA, 0.64, NA), D = c(NA, 
1.7142857, NA, NA, 0.7032967, NA)), .Names = c("A", "B", "C", 
"D"), class = "data.frame", row.names = c("1", "2", "3", "4", 
"5", "6"))), .Names = c("S1", "S2"))

推荐答案

na.omit()可用于数据帧,以删除任何包含 NA 值的行.我们可以使用 lapply()将其应用于 my.list .

na.omit() can be used on data frames to remove any rows that contain NA values. We can use lapply() to apply it over my.list.

lapply(my.list, na.omit)
# $S1
#        A   B    C         D
# 2 101031 1.5 1.30 0.8666667
# 3 101032 1.4 0.78 0.5571429
# 5 101220 9.3 7.30 0.7849462
#
# $S2
#        A    B    C         D
# 2 102143 0.70 1.20 1.7142857
# 5 102151 0.91 0.64 0.7032967

这篇关于如何从列表的数据框中删除NA?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆