Использовать purrr для позиции элемента во вложенном списке? - PullRequest
0 голосов
/ 14 мая 2019

Ситуация: У меня есть вложенный список на изображении ниже. Я хочу использовать purrr для перебора второго элемента каждого вложенного списка и применения функции преобразования даты.

nested list

Проблема: Я могу написать цикл for, чтобы легко перебирать его, но я хочу использовать это с purrr. Мои попытки вложенного списка не сработали. Обычный список в порядке, вложенный по позиции, не в порядке.

Воспроизводимый пример кода от Maurits Evers (Спасибо!)

lst <- list(
    list("one", "12345", "2019-01-01"),
    list("two", "67890", "2019-01-02"))

Любая помощь приветствуется!

1 Ответ

4 голосов
/ 14 мая 2019

См. Комментарий выше, чтобы понять, как предоставить воспроизводимый пример, включающий образцы данных.

Поскольку вы не предоставляете пример данных, давайте создадим некоторые минимальные макетные данные, аналогичные показанным на скриншоте.

lst <- list(
    list("one", "12345", "2019-01-01"),
    list("two", "67890", "2019-01-02"))

Чтобы сотворить третий элемент каждого list элемента as.Date, мы можем сделать

lst <- map(lst, ~{.x[[3]] <- as.Date(.x[[3]]); .x})

Мы можем подтвердить, что третий элемент каждого элемента list является объектом типа Date

str(lst)
#List of 2
# $ :List of 3
#  ..$ : chr "one"
#  ..$ : chr "12345"
#  ..$ : Date[1:1], format: "2019-01-01"
# $ :List of 3
#  ..$ : chr "two"
#  ..$ : chr "67890"
#  ..$ : Date[1:1], format: "2019-01-02"

Обновление

Более purrr / tidyverse -канонический подход заключается в использовании modify_at (спасибо @ H1)

lst <- map(lst, ~modify_at(.x, 3, as.Date))

Результат тот же, что и раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...