说我有以下数据框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),]
会有效,但这并没有给我正确的答案(它没有返回任何行)。
我想要一个使用列名称向量匹配的方法,以及要匹配的值向量。
答案 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.table
和dplyr
以及sql
进行类比:
merge(df, setNames(list(4,25),c("A","B")))
# A B C
#1 4 25 a
#2 4 25 c