3
我已经对这个错误做了相当多的研究,并且在所有其他情况下,似乎在缺少括号或paren时会显示此错误。但是,我已经搜遍了我的代码,而且我没有看到任何地方。看起来代码并没有在抛出错误之前读取完整的aes对象:非二进制运算符aes函数的非数字参数
我正在创建一个函数,该函数将创建一个ggplot对象,在我的图表上绘制参考线和注记。下面是函数:
create_geom_segments <- function(labelx, labely, text_label, color) {
geom_obj <- (
geom_segment(aes(x=0, y=labely, xend =labelx, yend=labely), col = color, linetype = "dashed") +
geom_segment(aes(x=labelx, y=0,xend=labelx, yend=labely), col = color, linetype = "dashed") +
annotate("text", x=labelx, y=labely + 3, label=text_label)
)
return(geom_obj)
}
当我跑这跟一般的输入,如
test <- create_geom_segments(0,10, "test", "red")
我得到:
Error in geom_segment(mapping = aes(x = 0, y = labely, xend = labelx, :
non-numeric argument to binary operator
我成功之外创建这些对象之后,建立这一功能使用此功能:
new_graph <- (p + geom_segment(aes(x=0,y = x, xend = days_x, yend =x), col = "red", linetype = 'dashed') + geom_segment(aes(x=days_x, y = 0, xend = days_x, yend = x)
, col = "red", linetype = 'dashed') + annotate("text", x= days_x, y = x + 3, label = text))
我没有得到这个代码的任何错误,它按预期工作。
阅读'?aes_string'。 – joran 2014-09-25 17:32:06
另外,您可能想要避免使用'+',使用'list(geom_xxx(),geom_yyy ())''而不是 – baptiste 2014-09-25 17:34:35
谢谢!baptiste得到这个错误消失了,然后它没有正确的读取我的输入,这是通过切换到aes_string来修复的。我现在唯一的问题是annotate()函数是没有阅读功能输入任何想法? – emilylinndb 2014-09-25 17:48:30