R通过多列上的相等进行逻辑索引

时间:2016-01-07 21:26:48

标签: r dataframe

说我有以下数据框df

           A    B      C
     1     4   25      a
     2     3   79      b
     3     4   25      c
     4     6   17      d
     5     4   21      e
     6     5   25      f

如何索引某些列中的元素与矢量匹配的行,例如df$A == 4 & df$B == 25

我会想到这样的事情:df[df[,c("A", "B")] == c(4, 25),]会有效,但这并没有给我正确的答案(它没有返回任何行)。

我想要一个使用列名称向量匹配的方法,以及要匹配的值向量。

2 个答案:

答案 0 :(得分:2)

试试这个:

df[colSums(t(df[,c("A", "B")]) == c(4, 25))==2,]
  x A  B C
1 1 4 25 a
3 3 4 25 c

这可以回收矢量c(4, 25)

答案 1 :(得分:1)

你也可以使用一个简单的merge,它可以对data.tabledplyr以及sql进行类比:

merge(df, setNames(list(4,25),c("A","B")))
#  A  B C
#1 4 25 a
#2 4 25 c