You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何按名称规则筛选嵌套列表中子列表的符合要求元素

错误原因

  • 语法逻辑错误:purrr::keep()的第二个参数需要是作用于子列表元素的判断条件,你原有写法中names(.)指代的是外层dflist的名称而非每个子列表的名称,生成的逻辑向量长度和子列表长度不匹配,因此触发长度校验报错。
  • 匹配逻辑错误:%in%是精确匹配运算符,只能匹配名称完全等于A[的元素,无法实现「以A[开头」的前缀匹配需求。

正确实现代码

基于purrr的写法

library(purrr)

# 保留每个子列表中名称以A[开头的元素
res <- dflist %>%
  map(~ keep(.x, startsWith(names(.x), "A[")))

如果需要兼容R 3.3.0之前的版本,可以将startsWith(names(.x), "A[")替换为grepl("^A\\[", names(.x)),正则中^代表匹配开头,\\[转义匹配方括号本身。

基于base R的写法(无需加载第三方包)

res <- lapply(dflist, function(x) x[startsWith(names(x), "A[")])

结果验证

运行上述代码后,你可以通过names(res[[1]])验证输出:

names(res[[1]])
# 输出:[1] "A[1]" "A[2]"

完全符合保留所有A[开头元素的需求。

内容的提问来源于stack exchange,提问作者J. Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:24:03