У меня есть довольно простая функция, которая принимает в качестве аргумента фрейм данных и столбец в этом фрейме данных. Функция отображает столбец во фрейме данных на оси Y относительно столбца «год» на оси X. Затем он отобразит значения для рассматриваемого столбца вместе со своими точками на графике.
df_to_plot = data.frame(year = c(2011, 2012, 2013), data=c(0.22334, 0.345345, 0.456234))
makePlotFunc = function(df, y_var)
{
ggplot(df, aes_(x=as.name("year"), y = as.name(y_var), group=1, label=as.name(y_var))) + geom_point() + geom_line() + geom_text()
}
makePlotFunc(df_to_plot, data)
Однако вы заметите, что столбец «data» имеет много десятичных знаков. Я хочу, чтобы можно было округлить эти десятичные точки, чтобы было хорошо, когда эти точки данных отображаются на графике. Обычно, когда НЕ используется «нестандартная оценка», это можно сделать довольно просто в geom_text (), например так:
geom_text(aes(round(data, 2))
Поскольку я превратил это в функцию, использующую нестандартную оценку, все же это не может быть сделано.
geom_text(aes_(round(as.name(y_var), 2)))
Это выдает ошибку.
non-numeric argument to mathematical function
Я решил свою проблему, создав новый столбец во фрейме данных, который служит такой же меткой.
df_to_plot = mutate(df_to_plot, label = as.character(round(data, 2)))
Тем не менее, мне все еще интересно, знает ли кто-нибудь, как я могу это сделать, используя нестандартную оценку.