r - 如何减少(子集)列表列表?

标签 r list subset

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

list.ex <- list('a' = c(10,11), 'b' = c(9,10,11), 'c' = c(8,9,10,11), 'd' = c(7,8,9,10,11), 'e' = c(6,7,8,9,10,11), 'f' = c(6,8,9,10,11))

我想检查并删除那些属于另一个列表子集的列表(按确切顺序)。 例如在这种情况下,我想减少 list.ex这样我们就剩下 list.ex[[e]]list.ex[[f]] .

最佳答案

is_subsequence 确定 a 是否是相同顺序的 b 的子集。

library(tidyverse)

is_subsequence <- function(a, b) {
  str_detect(
    paste0(b, collapse = ","),
    fixed(paste0(a, collapse = ","))
  )
}

matches_other 获取一个向量并确定它是否匹配 list.ex

中的多个向量
matches_other <- function(l) {
  map_lgl(
    list.ex,
    ~is_subsequence(l, .)
  ) %>%
  sum() %>%
  `>`(1)
}

discard 用于删除匹配项。

list.ex %>%
  discard(matches_other)
#> $e
#> [1]  6  7  8  9 10 11
#> 
#> $f
#> [1]  6  8  9 10 11

关于r - 如何减少(子集)列表列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64465598/

相关文章:

python - 从字符串列表中删除重复项

javascript - 如果我添加 alert(),为什么我的 JavaScript 函数执行不确定?

r - 按行名称索引 data.frame 时出现意外行为

r - 使用简单的代码按两个因子、所有级别进行子集化

r - 使用 XML 和 Rvest 在 R 中进行网页抓取

r - 如何将多边形修改为孔(SpatialPolygons)并更改其槽

r - R中的gbm崩溃

rlang:Curly curl 运算符和 RHS 上字符串内的隧道数据变量

java - List Array Shuffle 还是用头撞墙?

swift - 我可以将枚举定义为另一个枚举案例的子集吗?