Написание функции с левой стороны dplyr - PullRequest
1 голос
/ 14 октября 2019

Я пытаюсь написать функцию (glue_sth), которая выполняет left_join, но вы можете указать, к какой переменной присоединиться, например:

df <- tibble(x = letters[1:10])

df_aux <- tibble(z = letters[1:10], y = 1:10)

glue_sth <- function(df, variable) {

  df %>% 
    left_join(df_aux, by = c(variable = "z"))
}

В этом случае переменная должна быть x, но я могу 'заставить его работать.

1 Ответ

3 голосов
/ 14 октября 2019

Найдите приведенную ниже функцию:

glue_sth <- function(df, variable) {

  df %>% 
    dplyr::rename('join'=variable) %>% 
    dplyr::left_join(df_aux, by = c('join' = "z"))
}

Здесь я, по сути, переименовал столбец, чтобы нам не пришлось проходить весь маршрут eval(parse()).

Альтернатива, как описанов комментариях:

glue_sth <- function(df, variable) {

  df %>% 
    dplyr::left_join(df_aux, by = setNames("z",variable))
}

Дайте мне знать, если это работает.

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