如何在列表列表中查找特定字符的索引?

How to find the index of a specific character in a list of lists?

我有一个这样的列表列表:


[[989]]
[1] "ARP5" "AGF" 

[[990]]
[1] "CDT6" "AngX"

[[991]]
[1] "TD26" "RIFL"

[[992]]
[1] NA

[[993]]
[1] "SPH1"

[[994]]
[1] "FAP87"  "CFAP87"

我想查询此列表以获取基因 == "FAP87" 所在的索引。

在这种情况下,索引将为 994。

Unlist 不起作用,因为它更改了索引号。

list %in% "FAP87" 不起作用,除非子列表的长度 == 1。(例如,list %in% "SPH1" 确实给我索引 993)。

如何访问列表列表中存在“FAP87”的索引?

使用循环

which(sapply(list, function(x) "FAP87" %in% x))

或者另一种选择是 enframe(来自 tibble)到两列数据集,filter 行和 pull name 列(其中将是序列值,因为 list 未命名)

library(tibble)
library(dplyr)
library(tidyr)
enframe(list) %>% 
   unnest(value) %>%
   filter(value %in% 'FAP87') %>%
   pull(name)