Передача имен столбцов dataframe в функцию внутри другой функции

Я выясняю, как я могу решить проблему передачи имен в функции, но я застрял. Это мой код:

plotScatter <- function(data_in, var_x, var_y, title) {
    xx <- eval(substitute(var_x), eval(data_in))
    yy <- eval(substitute(var_y), eval(data_in))

    data <- data.frame(x = xx, y = yy)
    p <- ggplot(data, aes(x = x, y = y)) +
         geom_point(shape = 1, na.rm = TRUE) +
         geom_smooth(method = lm) +
         ggtitle(title) +
         xlab(paste0(substitute(var_x), '\n', 'R-Squared: ', round(cor(data$x, data$y, use = 'complete.obs'), 2))) +
         ylab(substitute(var_y)) +
         theme_light()
    return(suppressWarnings(p))
}

doPlots <- function(data_in, fun, filter_var, filter_vector, feature_var, target_var) {
    ncol <- length(filter_vector) %/% 2
    pp <- list()

    for (v in filter_vector) {
        filtered_data <- subset(data_in, substitute(filter_var) == v)

        p <- fun(data_in = filtered_data, var_x = feature_var, var_y = target_var, title = v)
        pp <- c(pp, list(p))
    }
    do.call("grid.arrange", c(pp, ncol = ncol))
}


doPlots(data_in = df, fun = plotScatter, filter_var = codice_apparato,
    filter_vector = apparati, feature_var = giorno_settimana, target_var = num_transiti_in)

Возврат ошибки заключается в следующем:

Ошибка в eval(expr, envir, enclos): объект 'feature_var' не найден

Похоже выражение

p <- fun(data_in = filtered_data, var_x = feature_var, var_y = target_var, title = v)

не оценивает содержимое переменной feature_var в качестве названия столбца "giorni_settimanali".

Не могли бы вы помочь мне?

Спасибо

0 ответов

Другие вопросы по тегам