2017-01-11 5 views
4

Я играю с некоторыми функциями purrr и обнаруживаю (к моему удовольствию) purrr::at_depth(.x, .depth, .f, ...), что является сокращением для purrr::map(x, . %>% map(fun)).Итерации по двум вложенным спискам параллельно с использованием функций purrr

Вопрос:Есть ли подобная функция или собственно «purrr -way» делать то же самое, когда у меня есть два вложенных списков, которые я хочу перебрать параллельно

В качестве примера:

x <- list(list(10, 20), list(30, 40)) 
y <- list(list(1, 2), list(3, 4)) 

a <- list() 
for(i in seq_along(x)) { 
    a[[i]] <- map2(x[[i]], y[[i]], `+`) 
} 

Это работает, но его довольно грязно, и я бы хотел избежать цикла for.

ответ

4

У вас есть список списков и + не векторизации для списков, вы можете использовать map2 два раз, первые map2 петли через й, у одновременно и второй map2 добавить подсписков в мудрой моде элемента:

map2(x, y, map2, `+`) 

#[[1]] 
#[[1]][[1]] 
#[1] 11 

#[[1]][[2]] 
#[1] 22 


#[[2]] 
#[[2]][[1]] 
#[1] 33 

#[[2]][[2]] 
#[1] 44 
+1

Ницца, вот что я искал. Спасибо! –

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

  • Нет связанных вопросов^_^