說我們有這個玩具數據ggplot:無法通過ylim參數的函數
temp <- data.frame(A=1:6, gr=c("A","A","A","B","B","B"))
我可以輕鬆地創建一個情節一樣
lev <- c("A", "B")
ggplot()+geom_point(data=temp,aes(x=A, y=gr))+ylim(lev)
但我想將其轉換爲函數以便輕鬆更改輸入參數
myplot <- function(lev=lev) {ggplot()+geom_point(data=temp,aes(x=A, y=gr))+ylim(lev)}
但是當我運行
lev <- c("B","A")
myplot()
我得到這個錯誤:
Error in limits(c(...), "y") : promise already under evaluation: recursive default argument reference or earlier problems?
我試着轉換ylim的因素,使用eval,但它也不管用。
我試過參數化其他東西,如輸入數據集,他們工作得很好,但我不明白爲什麼ylim沒有。
有這充分說明有關相關問題與AES參數
Pass function argument to ggplot label
一個問題,但它的解決方案使用aes_string,在這裏並不適用。
我使用lev = lev,因爲我想要一個默認參數。但這很奇怪,因爲如果我在定義 – skan