【问题标题】:Searching for a vector in a list在列表中搜索向量
【发布时间】:2013-05-30 21:42:36
【问题描述】:

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

我有一个向量列表:

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

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

【问题讨论】:

  • 一旦你将它包装在一个允许你搜索任何给定向量的函数中,就不会太麻烦了。那么你唯一的问题是考虑是否要使用 isTRUE(all.equal())identical 之类的东西。

标签: r list search vector


【解决方案1】:

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

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]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2019-04-28
    • 2020-12-20
    相关资源
    最近更新 更多