在多条件测试中过滤 R 中的行

Filtering Rows in R on Mutliple Conditional Test

所以我试图根据具有两个或多个 0 值的条件过滤 data.frame 的行。

    mir Target_2 Score value_2  Blank
1   BERKSHIRE   BERKS   77  0   0
2   FRANKLIN    FRANK   81  5   0
3   HAMPDEN     DEN     69  4   0
4   HAMPSHIRE   HAMP    75  0   0
5   MIDDLESEX   SEX     47  0   0
6   WORCHESTER  SEX     0   2   0
7   WORCHESTER  WOR     64  0   0
8   BERKSHIR    BERKS   0   3   0
9   HAMPHIRE    HAMP    0   4   0

上面是一个示例数据框,我需要帮助返回行中只有一个零值的值。出于本示例的目的,我包括了一个全为零的列,但我的数据不会那么干净。所以我想知道是否有如下条件:

 If col[value] == 0:
         if col+1[value] == 0:
            filter
         elif col+2[value] == 0:
            filter
         elif col+n[value] == 0:
           filter

我想将函数的输出应用于测试table:

   mir Target_2 Score value_2   Blank
    2   FRANKLIN    FRANK   81  5   0
    3   HAMPDEN     DEN     69  4   0

这是一种方式:

> df[apply(df[3:5], 1, function(x) table(x)['0']==1), ]
       mir Target_2 Score value_2 Blank
2 FRANKLIN    FRANK    81       5     0
3  HAMPDEN      DEN    69       4     0

它使用函数table 来计算每个数字的频率。如果 0 的频率为 1,则该行的频率为 returns TRUE。然后这用于相应地对 df 进行子集化。