使用Magrittr管道插入递归列表

时间:2016-09-08 04:43:53

标签: r magrittr

如何以允许完全修改的方式插入递归列表 列表将在管道链中进一步传递?

如果我有一个非递归列表,insetinset2函数可以正常工作, 但递归列表呢?

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

1 个答案:

答案 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