2012-12-11 63 views
0

這些線路中的R-腳本函數時正常工作:參數在自己的包ggplot

hline_DL <- 22 
p <- p + geom_hline(aes(yintercept=hline_DL), color="red", linetype=2) 

但是,當我創建中的一樣相同的功能包(複製粘貼!),我得到此故障運行功能時:

"Error in eval(expr, envir, enclos) : object 'hline_DL' not found" 

如果我採取上述行了,那麼函數的其餘部分運作良好的封裝(繪製我想要的東西,但沒有水平虛線在y=22)。

爲什麼它作爲一個獨立的功能,而不是在一個包中?我該如何解決它?

+0

我有NAMESPACE文件中的導入(ggplot2)(如果這就是你的意思,我是創建包的新手)。 – Chris

+0

是的,我現在意識到我認爲我誤解了這個問題...... – joran

+1

嘗試在'aes'之外移動'yintercept = hline_DL',因爲您正在設置它,而不是映射它。 'aes()'中存在某種非標準的評估問題。 – joran

回答

2

顯然,我的建議奏效了。即在aes()之外放yintercept = hline_DL,以避免發生非標準評估。

一般而言,設置爲單個值的美學不應在aes()之內設置。

+0

任何想法,這個行爲?當我們把函數放在一個包中時,是否會改變範圍? – agstudy

+0

@agstudy我想我會稱這種奇怪的用戶行爲,並不奇怪'aes()'的行爲。無論如何,我認爲無論如何都要在多個嵌套函數中正確評估名稱。 – joran

+0

你是對的我只是想了解R的行爲,無論如何我都會用aes_string來測試。 – agstudy