【问题标题】:Finding all vectors in a list which contain a value [closed]查找列表中包含值的所有向量[关闭]
【发布时间】:2016-07-02 20:34:45
【问题描述】:

我有一个整数向量列表,我想要一个函数,它可以为我提供包含给定整数的所有向量的索引。类似lapply(list, match(integer))

这样做的问题在于,这种语法不是将两个变量的函数(例如match)放入lapply 的正确方法。

正确的写法是什么?

【问题讨论】:

  • 我们能不能得到一个可重现的例子之类的东西?
  • 这是绝对必要的吗? Imo 已经对我的问题发布了详尽的答案(显然他并不清楚),我接受了。他自己甚至包括了一个可重复的例子,所以我在这里再次写这个似乎没有任何意义。我认为这个问题非常基本,因此不需要可重复的示例。

标签: r list function lapply


【解决方案1】:

你很接近。这是我会做的:

myVectors <- sapply(1:length(myList), function(i) any(myList[[i]] == myValue))

这将返回一个逻辑向量,指示列表中的哪些元素具有值 myValue。

您可以通过以下方式检索索引:

myIndicies <- which(myVectors)

虽然当您已经拥有逻辑向量时通常不需要这样做。

例如,您可以使用以下内容将所需的向量拉入一个新列表:

myNewList <- myList[myVectors]

举个例子,在这个列表中尝试一下,你想在其中找到 9 的向量:

myList <- list(a=1:10, b=5:23, c=6, z=9:19)
sapply(1:length(myList), function(i) any(myList[[i]] == 9))
[1]  TRUE  TRUE FALSE  TRUE

【讨论】:

    猜你喜欢
    • 2015-01-28
    • 1970-01-01
    • 2018-08-10
    • 2022-11-26
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多