Передача имен столбцов 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".
Не могли бы вы помочь мне?
Спасибо