Предположим, есть следующий список:
x <- list(a = list(a1 = 1, a2 = 2), b = list(a2 = 3, a1 = 4))
Позиции / имена смешаны в подсписках, и чтобы вычеркнуть a1
s из списка, я бы сделал следующее в purrr
.
x %>% map(purrr::pluck, "a1")
$`a`
[1] 1
$b
[1] 4
Чтобы выбросить элемент вместо того, чтобы хранить его, я немного поэкспериментировал и придумал следующее (я выбросил a2
здесь).
x %>% map(purrr::assign_in, "a2", value = NULL)
$`a`
$`a`$`a1`
[1] 1
$b
$b$`a1`
[1] 4
С точки зрения выщипывания, мне на самом деле нравится второй стиль - то есть сохранять структуру индексации списка без изменений, возвращая только те элементы, которые мне нужны. Поэтому я бы предпочел, чтобы, выполнив x %>% map(purrr::pluck, "a1")
, я получил второй результат.
В качестве альтернативы, может быть, есть лучший способ выброса объектов в purrr
, о котором я не знаю, чтобы стили вывода двух кодов (выщипывание, выбрасывание) были согласованы?