1

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

我有一个向量列表:

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)) }))

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

4

1 回答 1

3

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

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

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

for(i in 1:length(c(1,2)))
c(1,2)[i]==l[[i]]
于 2013-05-30T21:50:06.950 回答