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

如何用Filter与lapply过滤R嵌套列表并提取目标数据?

嵌套列表数据提取与过滤问题

这是之前问题的后续提问,我在使用Filter和lapply函数提取所需数据时遇到困难,现有嵌套列表数据(节选)如下:

result <- list(
  list(
    startSize = 2, method = "pa",
    list(time = 0.0016831, pk = c(1, 0), ij = c(10, 0, 0, 0, 0, 0)),
    list(time = 0.0002714, pk = c(1.1), ij = c(0)),
    list(time = 5.26e-05, pk = c(), ij = c())
  ),
  list(
    startSize = 2, method = "pa",
    list(time = 0.0004191, pk = c(2, 0), ij = c(22, 0, 0, 0, 0, 0)),
    list(time = 0.0002401, pk = c(0.5, 1.2), ij = c(0)),
    list(time = 5.28e-05, pk = c(), ij = c())
  ),
  list(
    startSize = 4, method = "pnb",
    list(time = 0.0009156, pk = c(3, 0, 0, 0), ij = c(33, 0, 0, 0,0, 0)),
    list(time = 0.0010072, pk = c(4, 0, 0, 0), ij = c(44, 0, 0, 0.25, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0)),
    list(time = 0.0005579, pk = c(5, 0), ij = c(55, 0.0625, 0.0625, 0.0625, 0.0625, 0))
  ),
  list(
    startSize = 4, method = "pnb",
    list(time = 0.0009364, pk = c(6, 0, 0, 0), ij = c(66, 0, 0, 0, 0, 0)),
    list(time = 0.0023319, pk = c(7, 0, 0, 0), ij = c(77, 0, 0, 0, 0.25, 0, 0, 0.25, 0, 0, 0.33, 0.25, 0, 0, 0, 0, 0, 0)),
    list(time = 0.0013074, pk = c(8, 0), ij = c(8.8, 0.0625, 0.0625, 0.0625, 0.0625, 0))
  )
)

该列表包含4个嵌套子列表,有2种不同的startSize(2/4)、2种不同的method(pa、pnb),每种实验重复2次。每个实验包含3次迭代,记录了time以及两个向量pk和ij。

基于之前的回答,我尝试编写过滤函数简化操作,例如:

myFilterFunction1 <- function(mylist, size, meth) {
  return(mylist["startSize"] == size && mylist["method"] == meth)
}

或

myFilterFunction2 <- function(mylist, size, meth) {
  return Filter(function(z) z["startSize"] == size && z["method"] == meth, mylist)
}

但两个函数均报错,错误信息:'list' object cannot be coerced to type 'double',导致无法继续使用lapply处理数据。

我需要提取以下三类结果:

1. 时间矩阵

当startSize=2、method="pa"时,得到如下矩阵:

times,1,2,3
1,0.00168310.00027145.26e-05
2,0.00041910.00024015.28e-05

2. 向量长度矩阵

针对pk向量,当startSize=2、method="pa"时,得到如下矩阵:

length(pk),1,2,3
1,210
2,220

3. 按迭代合并的向量

针对pk向量,当startSize=2、method="pa"时,得到如下向量:

c(1, 0, 2, 0), c(1.1, 0.5, 1.2), c()

我感觉离解决问题很近,但过去7小时都没能成功,希望能得到帮助!


内容的提问来源于stack exchange,提问作者Markstar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:39:19