Я изо всех сил пытаюсь написать очень простую оболочку для создания графиков для различных переменных. Скажем, мои данные:
data <- tibble(year = seq(2001,2015),var1 = rnorm(15, mean=2), var1_sd = rnorm(15, mean=1, sd=0.8), var2 = rnorm(15, mean=7), var2_sd = rnorm(15, mean=1, sd=0.15))
и график, который я хочу сделать, составляет
ggplot(data,aes(x=year, y=var1)) +
geom_pointrange(aes(ymin=var1-var1_sd, ymax=var1+var1_sd))
Я хочу сделать точно такой же график для ряда переменных комбинации, поэтому я написал оболочку:
myplot <- function(data, var) {
var <- enquo(var)
sdvar <- paste0(quo_name(var), "_sd")
ggplot(data,aes(x=year, y=!!var)) +
geom_pointrange(aes(ymin=!!var-!!sdvar, ymax=!!var+!!sdvar))
}
Когда я вызываю myplot(data, var1)
, я получаю ошибку "Ошибка в (~ var1) -" var1_sd ": non-Numberri c аргумент к бинарному оператору "
Я думаю, что проблема в линейной операции между не заключенными в кавычки переменными? Кто-нибудь знает как это обойти?
Спасибо !!!