purrr - pmap - Предоставляет разные имена столбцов для имен параметров функций в аккуратном стиле - PullRequest
1 голос
/ 29 мая 2020

Мне интересно, есть ли способ указать, какие столбцы должны соответствовать аргументам при вызове pmap в data.frame или именованном списке.

Поведение по умолчанию, которое полезно и интуитивно понятно в большинстве случаев это сопоставление имен столбцов с именами аргументов, как в

check_row_deidentified <- function(encntr_key, clinical_event_key, note_value, ...) { 
  # Do stuff
  tibble::tibble(encntr_key, clinical_event_key, note_value)
}

notes_1 <- tibble::tibble(
  encntr_key = c(1,2,3),
  clinical_event_key = c(1,2,3),
  note_value = c("foo", "bar", "baz")
  ) 


out <- notes_1 %>%
 purrr::pmap_dfr(check_row_deidentified)

Но мне интересно, есть ли способ предоставить ввод с другими именами столбцов и указать, как pmap должен их обрабатывать.

Как в:

check_row_deidentified <- function(encntr_key, clinical_event_key, note_value, ...) { 
  # Do stuff
}

notes_1 <- tibble::tibble(
  key_enc = c(1,2,3),
  key_clinical = c(1,2,3),
  free_text = c("foo", "bar", "baz")
  ) 


out <- notes_1 %>%
 purrr::pmap_dfr(check_row_deidentified, encntr_key = key_enc, clinical_event_key = key_clinical, note_value = note_value)

Думаю, очевидным выбором было бы просто переименовать эти столбцы перед вызовом pmap, как в

# Given as arg
to_rename <- rlang::exprs(
  note_value = free_text,
  encntr_key = key_enc,
  clinical_event_key = key_clinical
)

notes_1 %>%
  dplyr::rename(!!!to_rename) %>%
  purrr::pmap_dfr(check_row_deidentified)

Но я Не уверен, существует ли что-то менее запутанное

1 Ответ

1 голос
/ 29 мая 2020

Я решил, что мой «хитрый» обходной путь достаточно хорош для этого упражнения:

Думаю, очевидным выбором было бы просто переименовать эти столбцы, прежде чем я назову pmap, как в

# Given as arg
to_rename <- rlang::exprs(
  note_value = free_text,
  encntr_key = key_enc,
  clinical_event_key = key_clinical
)

notes_1 %>%
  dplyr::rename(!!!to_rename) %>%
  purrr::pmap_dfr(check_row_deidentified)

Но я не уверен, существует ли что-то менее запутанное

...