在列表中搜索向量

时间:2013-05-30 21:42:36

标签: r list search vector

这似乎是一个愚蠢的问题,但在花了一些时间寻找(简单)解决方案之后,我找不到它。

我有一个向量列表:

l <- list(c(1, 2), c(5, 10))

我想测试一个给定的向量---例如c(1, 2) ---是否在该列表中。我认为“直截了当”的方法可行:

c(1, 2) %in% l

但返回

[1] FALSE FALSE

最后我找到了以下解决方案:

any(sapply(l, function(x) { all(x == c(1, 2)) }))

但它非常麻烦,所以我真的很想知道这是否是最简单的选择。有没有更简单的方法来测试向量列表中的向量?

1 个答案:

答案 0 :(得分:3)

由于您正在处理对象,==运算符并不理想。一种稍微简单的方法是:

any(sapply(l, identical, y=c(1,2)))

%in%运算符不起作用,因为它是对函数match的调用。它将l读作矢量。换句话说,它正在做的是:

for(i in 1:length(c(1,2)))
c(1,2)[i]==l[[i]]