Используйте карту, чтобы вернуть NA, когда элемент отсутствует во вложенном списке - PullRequest
2 голосов
/ 18 апреля 2020

У меня есть вложенный список:

test <- list(
  one = list(text = "String", number = "1"),
  two = list(text = "String"),
  three = list(text = "String", number = "3")
)

И я могу использовать map_chr(test, "text") для возврата каждого текстового значения, но как мне заставить map_chr(test, "number") работать и возвращать:

one  two  three
"1"  NA   "3"

Ответы [ 2 ]

2 голосов
/ 18 апреля 2020

Вы можете сделать:

map_chr(test, ~ pluck(., "number", .default = NA_character_))

  one   two three 
  "1"    NA   "3" 

Или напрямую (предложено @aosmith):

map_chr(test, "number", .default = NA_character_)
0 голосов
/ 18 апреля 2020

Мы также можем использовать логическое условие

library(purrr)
map_chr(test, ~ {val <- .x$number; replace(val, is.null(val), NA) })
#  one   two three 
#  "1"    NA   "3" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...