gpt4 book ai didi

r - 列表的搜索和子集列表

转载 作者:行者123 更新时间:2023-12-04 21:13:03 24 4
gpt4 key购买 nike

我已经搜索过,但找不到相关答案。

样本数据:

example.list <- list(list("a",list("b"),list("c")),list("c"))

我想要包含字母 "c"的子集列表:

这里得到最后一个包含字母“c”的 inode :
check.a <- lapply(example.list, function(x) grep("c",x))

我将如何获得具有上述索引的列表?或者如何以其他方式获取列表列表?

获取列表 c(1,3) 的最后一个节点的一部分有前面的列表节点 c(1,2)。

编辑:所需的输出:(像这样)
 [[1]][[3]]
[[1]][[3]][[1]]
[1] "c"


[[2]]
[[2]][[1]]
[1] "c"

但是,我还需要了解提供的索引,如何获取嵌套列表的子集?请使用 check.a

编辑2:

因此,这里是可用于对相关列表节点进行子集化的列表索引:
first.list.index <- which(lapply(lapply(example.list, function(x) grep("c",x)),length)>0)
last.list.index <- unlist(lapply(example.list, function(x) grep("c",x)))

这个想法是这样的:(不起作用,只是为了证明我所追求的)
lapply(list(a=first.list.index,b=last.list.index), function(a,b) example.list[[a]][[b]])

编辑 3:(最后一次编辑)

实际数据是这样的:(我希望通过我提供的索引来解决,这就是我减少问题的原因)
 [[1]]
[[1]][[1]]
[1] "a"

[[1]][[1]]$data

[[1]][[2]]
[[1]][[2]][[1]]
[1] "b"

[[1]][[1]]$data

[[1]][[3]]
[[1]][[3]][[1]]
[1] "c"

[[1]][[1]]$data


[[2]]
[[2]][[1]]
[1] "c"

[[2]][[1]]$data

对不起这个烂摊子!

这是减少的 dput:
     list(list(structure(list(name = "a", data = c("21016954")), .Names = c("name", "data"
)), structure(list(name = "b", data = c("17103795")), .Names = c("name", "data")), structure(list(name = "c",
data = c("38036543")), .Names = c("name", "data"))), list(structure(list(name = "c", data = c("42456597")), .Names = c("name","data"))))

最佳答案

您的第二次编辑是正确的,但您需要使用 Map 而不是 lapply 。使用您的数据

d <-  list(list(structure(list(name = "a", data = c("21016954")), .Names = c("name", "data"
)), structure(list(name = "b", data = c("17103795")), .Names = c("name", "data")), structure(list(name = "c",
data = c("38036543")), .Names = c("name", "data"))), list(structure(list(name = "c", data = c("42456597")), .Names = c("name","data"))))

Map(function(i, j) d[[i]][[j]],
i = which(lapply(lapply(d, function(x) grep("c",x)),length)>0),
j = unlist(lapply(d, function(x) grep("c",x))))

#[[1]]
#[[1]]$name
#[1] "c"
#
#[[1]]$data
#[1] "38036543"
#
#
#[[2]]
#[[2]]$name
#[1] "c"
#
#[[2]]$data
#[1] "42456597"

关于r - 列表的搜索和子集列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30453117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com