如何以允许完全修改的方式插入递归列表 列表将在管道链中进一步传递?
如果我有一个非递归列表,inset
和inset2
函数可以正常工作,
但递归列表呢?
library(magrittr)
t1 <- list()
t1$a <- 1
t1$b <- 2
t1 %>%
inset2("a", 5)
## $a
## [1] 5
##
## $b
## [1] 2
t2 <- list()
t2$a <- 1
t2$b$c <- 1
t2$b$d <- 1
t2 %>% is.recursive
## [1] TRUE
答案 0 :(得分:0)
一种方法是使用嵌套的inset2
次调用。
t2 %>%
inset2("b", (.) %>% extract2("b") %>% inset("d", 5))
## $a
## [1] 1
##
## $b
## $b$c
## [1] 1
##
## $b$d
## [1] 5
此处(.) %>% extract2("b") %>% inset("d", 5))
需要t2$b
修改
d
使用inset
功能,然后将其替换为t2
。