如何删除R列表中只有特定列为零的行?

时间:2020-03-27 09:52:48

标签: r list dataframe

我有以下数据帧DF

 Sample Chr          Gene                                Exon  Start    End   RC medRC RC.norm medRC.norm lowQual  CN
Sample   1 |LOC102725121   |LOC102725121.E1.chr1.12080.12251  12080  12251    0     0       0          0         CN2
Sample   1 |LOC102725121   |LOC102725121.E2.chr1.12595.12802  12595  12802   19    18      13         13 lowQual CN2
Sample   1 |LOC102725121   |LOC102725121.E3.chr1.13163.13658  13163  13658 1345  1062     918        918         CN2
Sample   1       |WASH7P         |WASH7P.E1.chr1.14620.15015  14620  15015  856   631     584        584 lowQual CN2
Sample   1       |WASH7P         |WASH7P.E2.chr1.15795.15914  15795  15914    7     7       5          9 lowQual CN1
Sample   1       |WASH7P         |WASH7P.E3.chr1.16743.17098  16743  17098  218   171     149        149 lowQual CN2
Sample   1       |WASH7P         |WASH7P.E4.chr1.17247.18121  17247  18121  460   358     314        314 lowQual CN2
Sample   1       |WASH7P         |WASH7P.E5.chr1.18216.18411  18216  18411    6     4       4          3 lowQual CN2
Sample   1       |WASH7P         |WASH7P.E6.chr1.18963.19169  18963  19169   21    12      14         12 lowQual CN2
Sample   1       |WASH7P         |WASH7P.E7.chr1.24260.24532  24260  24532    0     0       0          0         CN2
Sample   1       |WASH7P         |WASH7P.E8.chr1.24655.24855  24655  24855    2     0       1          0         CN2
Sample   1            NA              NA.E1.chr1.30313.30542  30313  30542    1     0       1          0 lowQual CN2
Sample   1      |FAM138F        |FAM138F.E1.chr1.35120.35492  35120  35492    0     0       0          0         CN2
Sample   1      |FAM138F        |FAM138F.E2.chr1.35565.35779  35565  35779    0     0       0          0         CN2
Sample   1            NA              NA.E2.chr1.65509.65726  65509  65726   14     5      10          4 lowQual CN2
Sample   1            NA              NA.E3.chr1.65776.65972  65776  65972   84    40      57         57 lowQual CN2
Sample   1        |OR4F5          |OR4F5.E1.chr1.69028.69391  69028  69391   72    48      49         48 lowQual CN2
Sample   1        |OR4F5          |OR4F5.E2.chr1.69432.69630  69432  69630  217   176     148        148 lowQual CN2
Sample   1        |OR4F5          |OR4F5.E3.chr1.69677.69961  69677  69961   76    47      52         44 lowQual CN2
Sample   1            NA            NA.E4.chr1.120817.120937 120817 120937    4     2       3          2 lowQual CN2
Sample   1            NA            NA.E5.chr1.129075.129255 129075 129255   66    25      45         29 lowQual CN2
Sample   1    |LOC729737    |LOC729737.E1.chr1.135267.135629 135267 135629   21    18      14         13 lowQual CN2
Sample   1    |LOC729737    |LOC729737.E2.chr1.135915.136035 135915 136035   22    12      15         12 lowQual CN2
Sample   1    |LOC729737    |LOC729737.E3.chr1.137436.138062 137436 138062  233   165     159        159 lowQual CN2
Sample   1    |LOC729737    |LOC729737.E4.chr1.138126.138246 138126 138246   30    26      20         20 lowQual CN2
Sample   1    |LOC729737    |LOC729737.E5.chr1.138324.138444 138324 138444   63    48      43         43 lowQual CN2
Sample   1    |LOC729737    |LOC729737.E6.chr1.138488.139800 138488 139800 1394   973     951        895 lowQual CN2
Sample   1            NA            NA.E6.chr1.228399.228603 228399 228603    3     3       2          3 lowQual CN2
Sample   1            NA            NA.E7.chr1.228681.228801 228681 228801    0     0       0          0         CN2
Sample   1            NA            NA.E8.chr1.267138.267258 267138 267258   17     7      12          6 lowQual CN2
Sample   1            NA            NA.E9.chr1.320927.321232 320927 321232    0     0       0          0         CN2
Sample   1 |LOC100132062 |LOC100132062.E1.chr1.324262.325646 324262 325646    4    83       3         91 lowQual CN0
Sample   1 |LOC100132062 |LOC100132062.E2.chr1.325690.325810 325690 325810    0     0       0          0         CN2
Sample   1 |LOC100132062 |LOC100132062.E3.chr1.325888.326008 325888 326008    0     0       0          0         CN2
Sample   1 |LOC100132062 |LOC100132062.E4.chr1.326072.326698 326072 326698    0     0       0          0         CN2

我想删除行RCmedRCRC.normmedRC.norm都显示为0的行。如何实现? 以及如何将命令应用于上面显示的几个数据帧的列表?

希望您能帮助我! 先感谢您。

2 个答案:

答案 0 :(得分:0)

假设您的数据框为DF

DF <- DF[DF$RC + DF$medRC + DF$RC.norm + DF$medRC.norm != 0,]

修改

有关数据框的列表

# dummy data
listDF <- list(DF1 = data.frame(RC=c(0,1,2,3),
            medRC=c(0,3,4,0),
            RC.norm=c(0,3,3,3),
            medRC.norm=c(0,3,3,3)),
          DF2 = data.frame(RC=c(2,0,1,2,3),
            medRC=c(4,0,3,4,0),
            RC.norm=c(1,0,3,3,3),
            medRC.norm=c(0,0,3,3,3)))


filteredDF <- lapply(listDF, 
                     function(DF) DF[DF$RC + DF$medRC + DF$RC.norm + DF$medRC.norm != 0,])

filteredDF 

# $DF1
#   RC medRC RC.norm medRC.norm
# 2  1     3       3          3
# 3  2     4       3          3
# 4  3     0       3          3

# $DF2
#   RC medRC RC.norm medRC.norm
# 1  2     4       1          0
# 3  1     3       3          3
# 4  2     4       3          3
# 5  3     0       3          3

答案 1 :(得分:0)

尝试使用dplyr

library(dplyr)
df <- filter(df, (RC!=0 & medRC!=0 & RC.norm!=0 & medRC.norm!=0))

希望您会发现它有用