Параметризация group_by%>% суммировать - PullRequest
0 голосов
/ 13 декабря 2018

Существует датафрейм, подобный следующему:

df <- data.frame("Config" = c("C1","C1","C2","C2"), "SN1" = 1:4, "SN2" = 5:8)

Я пытаюсь сделать group_by %>% summarise более общим.Вот пример, который не работает:

variable <- "SN1"

df %>%
  group_by(
  Config
  ) %>%
  summarise(
    paste0(variable, ".median")=median(UQ(as.symbol(variable)))
  ) %>%
  as.data.frame() ->
  df_summary

Он не работает из-за paste0(variable, ".median") part.

Связанный вопрос-ответ Передача аргументов функциям dplyr помог мне параметризовать median(UQ(as.symbol(variable))) часть, но она не упоминает левую часть.

Есть ли способ исправить вышеперечисленное?

1 Ответ

0 голосов
/ 13 декабря 2018

Вы можете использовать enquo и !!

library(tidyverse)

mysumm <- function(variable){
  var <- enquo(variable)
  df %>%
    group_by(
    Config
    ) %>%
    summarise(!!paste0(variable, ".median") := median(!!var))
}

mysumm('SN1')
# # A tibble: 2 x 2
#   Config SN1.median
#   <fct>  <chr>     
# 1 C1     SN1       
# 2 C2     SN1    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...