创建嵌套列表R时,我认为,有用的列表元素命名结构。我有一个列表列表,并希望应用任何列表中包含的每个向量的函数。 lapply
执行此操作,但随后删除列表的命名结构。如何在不剥离名称的情况下lapply
嵌套列表的每个向量元素?我尝试传递索引,但似乎做了同样的事情(条带名称)。
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"
答案 0 :(得分:10)
您似乎想要* apply family
的rapply
变体
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")