R &引用;“未找到对象”;为包创建新几何图形时出错
完全披露:该问题在 我正在开发一个大量使用R &引用;“未找到对象”;为包创建新几何图形时出错,r,ggplot2,R,Ggplot2,完全披露:该问题在 我正在开发一个大量使用ggplot2的软件包。我已经创建了自己的geom-geom_rug_alt,作为将地毯边缘放置在绘图顶部/右侧而不是默认位置的一种方式 我的问题是,当在中定义并调用geom\u rug\u alt()时,它似乎绘制得很好。(请自己验证一下。)但是,在我的包中,geom_rug_alt()在一个文件(CommonFunctions.R)中定义,并在另一个文件中调用(较大函数的Residuals()函数foo.R)。当我对某个东西调用foo.R时,会出现以
ggplot2
的软件包。我已经创建了自己的geom-geom_rug_alt
,作为将地毯边缘放置在绘图顶部/右侧而不是默认位置的一种方式
我的问题是,当在中定义并调用geom\u rug\u alt()
时,它似乎绘制得很好。(请自己验证一下。)但是,在我的包中,geom_rug_alt()
在一个文件(CommonFunctions.R
)中定义,并在另一个文件中调用(较大函数的Residuals()
函数foo.R
)。当我对某个东西调用foo.R
时,会出现以下错误:
Error in geom_rug_alt(aes(x = NULL, y = within.group.residuals, color = factor(within.1.sd.of.the.mean.of.all.residuals)), :
object 'GeomRugAlt' not found
现在,我已经做了几件事(由中的Hadley建议)来确保geom\u rug\u alt()
应该在包中正常工作:
georugalt
定义为包中名为CommonFunctions.R
的文件中的proto
对象<代码>通用函数。R包含my的第3-42行CommonFunctions.R
中,我确信在GeomRugAlt
的定义之后包含build\u accessor()
行geom\u rug\u alt
(my中的第42行)DESCRIPTION
文件中,我有一个collate:
行,其中CommonFunctions.R
首先出现DESCRIPTION
文件中,我有一行LazyLoad:false
行CommonFunctions.R
中,在将georugalt
定义为proto
对象之前,我包含了一个require(ggplot2)
调用foo.R
中,在调用Residuals()中的geom\u rug\u alt()
之前,我包含了一个require(ggplot2)
调用
很抱歉重复了这个问题,但我似乎找不到彻底的解决方案:-(将
导出(GeomRugAlt)
放在名称空间文件中。将导出(GeomRugAlt)
放在名称空间文件中。您是否将导出(GeomRugAlt)
在名称空间中的文件?@Sascha-可以!实际上,它需要导出(GeomRugAlt)
,而不是导出(GeomRugAlt)
,因为它找不到的对象是GeomRugAlt
。你能把它作为一个答案发布给我吗?如果你的描述和名称空间文件正确,你就不需要手动要求ggplot2。我还建议在对我的包运行R CMD check之后运行R CMD check
@Hadley,以及其他许多errors我得到了这个:geom_rug_alt:全局变量'GeomRugAlt'没有可见的绑定。我建议您修复所有可以修复的错误,然后在某个地方提供包源代码。您是否将export(geom_rug_alt)
放在名称空间文件中?@Sascha-这很有效!实际上,它需要export(GeomRugAlt)
,而不是导出(geom\u rug\u alt)
,因为它找不到的对象是GeomRugAlt
。你能把它作为一个答案发布给我吗?如果你的描述和名称空间文件正确,你就不需要手动要求ggplot2。我还建议在对我的包运行R CMD check之后运行R CMD check
@Hadley,以及其他许多errors我得到了:geom_rug_alt:全局变量“GeomRugAlt”没有可见绑定我建议修复所有错误,然后让包源在某个地方可用。你不应该需要导出该对象。@Hadley-我同意。我的理解是,导出它会让用户可用,这是不必要的。我们我们只是希望foo.R能够看到GeomRugAlt。您不需要导出该对象。@Hadley-我同意。我的理解是,导出它可以让用户使用它,这是不必要的。我们只希望foo.R能够看到GeomRugAlt。