2016-09-08 4 views
-1

Как я могу вставить рекурсивные списки таким образом, чтобы полный список был передан дальше по цепочке труб?Вставка рекурсивных списков с трубопроводом Magrittr

Если у меня есть нерекурсивный список, то функции 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

Один из методов заключается в использовании вложенных 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.

Смежные вопросы