这似乎是一个愚蠢的问题,但在花了一些时间寻找(简单)解决方案之后,我找不到它。
我有一个向量列表:
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)) }))
但它非常麻烦,所以我真的很想知道这是否是最简单的选择。有没有更简单的方法来测试向量列表中的向量?
答案 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]]