首页 > 解决方案 > R - 使用列表中每个项目的第一个元素过滤列表

问题描述

我对 R 相当陌生,我正在尝试将数据从 PDF 解析到数据表中。我已经能够将文本解析成一个列表,但是我很难尝试从列表中过滤数据。

例如,考虑下面的示例列表:

l_vectors <- list( c("K", "10", "20"),
                   c("1", "30", "40"),
                   c("a", "b", "c"),
                   c("x", "y", "z"))

假设我想过滤此列表,使其仅包含以“K”或“1”开头的向量

我可以使用 map_lgl 找到一个逻辑向量,指示哪些列表项是匹配的

map_lgl(l_vectors, function(x) x[1] == "K" | x[1] == "1" )
[1]  TRUE  TRUE FALSE FALSE

从听到我不太确定最好的方向。我猜我想将此逻辑向量与 pluck 结合使用,但似乎无法弄清楚。任何帮助,将不胜感激!

干杯,乔纳森

标签: rlistsubsetpurrr

解决方案


如果你想使用 baseR,你可以编写一个辅助函数,然后使用Filter

f <- function(x) x[1] %in% c("K", "1")
Filter(f, l_vectors)
#[[1]]
#[1] "K"  "10" "20"

#[[2]]
#[1] "1"  "30" "40"

这也可以写成

Filter(function(x) x[1] %in% c("K", "1"), l_vectors)

推荐阅读