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