Передать символьные строки в ggplot2 внутри функции

Часто я использую ggplot2 в своей работе и создаю функции обертки для ускорения работы. Использование нестандартной оценки (NSE) aes заставляет меня использовать фактические имена переменных, а не передавать символьные строки. Поэтому я копирую и переименовываю dataframes и имена переменных, чтобы успокоить ggplot2. Там должен быть лучший способ. Как я могу сделать ggplot2 принимать неизвестные имена данных и имена столбцов с помощью оболочки функций без репликации фрейма данных и использования имен общих столбцов?

Это работает:

ggplot(mtcars, aes(x=mpg, y=hp)) +
    geom_point()

Это не:

FUN <- function(dat, x, y) {
    ggplot(dat, aes(x = x, y = y)) +
        geom_point()
}

FUN(mtcars, "mpg", "hp")

Ответы

Ответ 1

Там функция aes_string, которую я действительно не вижу, учитывая известность, которая делает именно это:

FUN <- function(dat, x, y) {
    ggplot(dat, aes_string(x = x, y = y)) +
        geom_point()
}

FUN(mtcars, "mpg", "hp")