我有一个相当简单的函数,它将数据框和该数据框中的列作为参数。该函数绘制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)
你会注意到“数据”列有很多小数点。我希望能够舍入这些小数点,以便在绘图上显示这些数据点时看起来很好。通常,当不使用“非标准评估”时,可以在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)))
尽管如此,如果有人知道如何使用非标准评估,我仍然感兴趣。
答案 0 :(得分:1)
感谢MrFlick的回答。它奏效了!
geom_text(aes_(label=bquote(round(.(as.name(y_var)), 3))))