2012-12-11 61 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