我的代表如下:
library(dplyr)
library(purrr)
df1 <- data.frame(
col1 = 1:5,
col2 = 6:10
)
df2 <- df1 %>%
mutate(col3 = 1:5)
ls <- list(
a = list(df1 = df1),
b = list(
df1 = df1,
df2 = df2
),
c = list(
df2 = df2
)
)
我想过滤
ls
,以便保留 ls
中名称包含 col3
的元素。
我尝试过使用 keep,但无法在正确的深度正确索引。
预期解决方案:
list(
b = list(
df2 = df2
)
,c = list(
df2 = df2
)
)
使用
purrr
执行此操作的一种方法是使用 modify_tree
递归树以查找每个叶子的名称,以及 keep()
那些以 col3
作为名称的元素:
keep(
ls,
\(x) "col3" %in% unlist(modify_tree(x, leaf = names))
)