采取一个简单的嵌套列表L
:
L <- list(lev1 = list(lev2 = c("bit1","bit2")), other=list(yep=1))
L
#$lev1
#$lev1$lev2
#[1] "bit1" "bit2"
#
#
#$other
#$other$yep
#[1] 1
一个向量为我想要选择的每个部分提供了一系列深度L
:
sel <- c("lev1","lev2")
索引时我想要的结果是:
L[["lev1"]][["lev2"]]
#[1] "bit1" "bit2"
我可以概括使用Reduce
像这样:
Reduce(`[[`, sel, init=L)
#[1] "bit1" "bit2"
现在,我想扩展这个逻辑来进行替换,如下所示:
L[["lev1"]][["lev2"]] <- "new val"
,但我真的对如何生成递归感到困惑[[
选择的方式也将允许我分配给它。
为什么你不能这样做
L[[sel]] <- "new val"
好吧,如果你想走远路的话
你仍然可以使用Reduce
with modifyList
或者你可以使用[[<-
。这是一个例子modifyList
:
modifyList(L,Reduce(function(x,y)setNames(list(x),y),rev(sel),init = "new val"))
$lev1
$lev1$lev2
[1] "new val"
$other
$other$yep
[1] 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)