purrr-pmap-以整齐的样式向函数参数名称提供不同的列名称

问题描述 投票:1回答:1

[我想知道是否有一种方法可以指定在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)

但是我不确定是否存在一些较笨拙的东西

r purrr rlang tidyeval
1个回答
0
投票

我认为我的“笨拙”解决方法足以胜任本次练习:

我想一个明显的选择是在调用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)

但是我不确定是否存在一些较笨拙的东西

© www.soinside.com 2019 - 2024. All rights reserved.