gpt4 book ai didi

r - 重叠嵌套列表并保留命名/结构

转载 作者:行者123 更新时间:2023-12-04 09:31:58 26 4
gpt4 key购买 nike

在创建嵌套列表时,我认为 R 具有对列表元素有用的命名结构。我有一个列表列表,并希望应用包含在任何列表中的每个向量的函数。 lapply这样做但随后剥离了列表的命名结构。我该怎么办 lapply嵌套列表的每个向量元素而不剥离名称?我尝试传递索引,但这似乎做同样的事情( strip 名称)。

TEST <- list(n1=list(a="5", b="65"), n2=list(a="f", b= "f6"))
TEST
lapply(TEST, function(x) gsub("6", "foo", x))
lapply(seq_along(TEST), function(i) gsub("6", "foo", TEST[[i]]))

控制台输出:
> TEST
$n1
$n1$a
[1] "5"

$n1$b
[1] "65"


$n2
$n2$a
[1] "f"

$n2$b
[1] "f6"


> lapply(TEST, function(x) gsub("6", "foo", x))
$n1
[1] "5" "foo5"

$n2
[1] "f" "ffoo"

期望的结果:
$n1
$n1$a
[1] "5"

$n1$b
[1] "foo5"


$n2
$n2$a
[1] "f"

$n2$b
[1] "ffoo"

最佳答案

看来你想要 rapply *apply 系列的变体

rapply(TEST, function(x){gsub("6", "foo", x)}, how = "list")

$n1
$n1$a
[1] "5"

$n1$b
[1] "foo5"


$n2
$n2$a
[1] "f"

$n2$b
[1] "ffoo"

您也可以这样做以避免编写匿名函数
rapply(TEST, gsub, pattern = "6", replacement = "foo", how = "list")

关于r - 重叠嵌套列表并保留命名/结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13608336/

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