Я написал функцию для создания графиков, которая выглядит примерно так:
getSecPlot <- function(data, xvar, yvar, yvarsec, groupvar, ...){
sec_plot <- ggplot(data, aes_string (x = xvar, group = groupvar)) +
geom_col(aes_string(y = yvar, fill = groupvar, alpha = 0.5), position = "dodge") +
geom_line(aes(y = yvarsec, color = gender))
}
Я бы хотел изменить эту функцию. Иногда нет группвара. В этом случае мне бы хотелось иметь такой график, как:
sec_plot <- ggplot(data, aes_string (x = xvar, group = 1)) +
geom_col(aes_string(y = yvar), fill = "green") +
geom_line(aes(y = yvarsec, color = gender))
Итак, я хотел бы объединить это в одну функцию. Что-то вроде:
getSecPlot <- function(data, xvar, yvar, yvarsec, ...){
if (exists groupvar){
sec_plot <- ggplot(data, aes_string (x = xvar, group = groupvar)) +
geom_col(aes_string(y = yvar, fill = groupvar, alpha = 0.5), position = "dodge") +
geom_line(aes(y = yvarsec, color = gender))
} else {
sec_plot <- ggplot(data, aes_string (x = xvar, group = 1)) +
geom_col(aes_string(y = yvar), fill = "green") +
geom_line(aes(y = yvarsec, color = gender))
}
if (exists groupvar)
только для иллюстрации - как я могу проверить, был ли задан аргумент в R?
Я не уверен в том, как работает ...
, Как только я извлек groupvar
из аргумента функции, функция больше не работала:
getSecPlot <- function(data, xvar, yvar, yvarsec, ...){
sec_plot <- ggplot(data, aes_string (x = xvar, group = groupvar)) +
geom_col(aes_string(y = yvar, fill = groupvar, alpha = 0.5), position = "dodge") +
geom_line(aes(y = yvarsec, color = gender))
}
plot.SeverityYearly <- getSecPlot(freqSevDataAge, xvar = "agegroup", yvar = "severity", yvarsec = "frequency", groupvar = "gender")
Ошибка в aes_string (x = xvar, group = groupvar): объект 'groupvar' не найдено