【问题标题】:Obtaining the first instance of every element in a list using R使用 R 获取列表中每个元素的第一个实例
【发布时间】:2017-10-12 18:34:37
【问题描述】:

假设我有一个列表 y,我想返回另一个列表 x=c('a','b','c') 的每个元素的第一个实例的位置(即第一个a、第一个 b 等)。

使用

which(y %in% x) 

将简单地返回所有实例而不是第一个实例。另一种方法是遍历 x 中的所有元素 xi 并使用

min(which(y == xi))

有没有一种方法可以在不使用 for 循环遍历 x 中的元素的情况下做到这一点?我在 stackoverflow 上找到了几个关于如何在列表中查找单个元素的第一个实例的查询,但不是针对多个元素。

【问题讨论】:

  • 链接的线程处理了一个稍微不同的问题。我知道如何匹配列表元素,我特地问如何在另一个被查询的列表中返回一个列表的每个元素的第一个实例。

标签: r


【解决方案1】:

我会使用purrr 包中的map 函数来执行此操作:

indices <- purrr::map(x, function(i){
  min(which(y == i))
})

【讨论】:

  • 我不熟悉 purrr 库,但这确实有效,谢谢。
  • 它类似于apply系列函数,但语法比apply系列更一致
  • 闪电快。谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-05-20
  • 1970-01-01
  • 1970-01-01
  • 2020-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-15
相关资源
最近更新 更多