2017-10-12 27 views
1

我正在嘗試編寫一個通用函數,以根據用戶輸入生成ggplot2散點圖。這是我到目前爲止有:ggplot2用戶函數中的非數值論證錯誤

G.Point <- function(USER2, USER3, USER4, X, Y){ 
Point <<- Plot.data + geom_point(
aes_string(x = USER2, y = USER3, colour = USER4) + 
    xlab(X) + 
    ylab(Y)) 
} 
G.Point("USER2", "USER3", "USER4", "X", "Y") #These are called something else in actual code. 
plot(Point) 

這樣可以使錯誤返回「非數字的參數,以二進制運算符」,但據我可以告訴我不是創造一個二元運算符,所以我的非數字輸入應該沒事。在我開始嘗試指定x和y標籤之前,此代碼正常工作。

我必須失去了一些愚蠢的,因爲我是新來提前寫我自己的功能R.

感謝。

回答

0

我猜的錯誤是在不關閉括號

geom_point(
    aes_string(x = USER2, y = USER3, colour = USER4)) 

而且,最好不要使用<<-。相反

G.Point <- function(USER2, USER3, USER4, X, Y){ 
    print(Plot.data + 
     geom_point(aes_string(x = USER2, y = USER3, colour = USER4)) + 
     xlab(X) + 
     ylab(Y)) 
    } 
G.Point("USER2", "USER3", "USER4", "X", "Y") 

注:重複的例子會更好

+0

謝謝你,我知道它會什麼明顯。只需很快使用<< - 分配給變量有什麼問題?理想情況下,我希望將這個圖存儲到一個變量中以後再調用。 –

+0

@ Matt.TW這是全球任務。在這種情況下,它不是必需的 – akrun

相關問題