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)
    调用
  • 我不确定我还缺少什么。考虑到我的运行情况良好,我怀疑问题不在于我的geom不工作,而在于我在包开发过程中做了一些错误的事情


    很抱歉重复了这个问题,但我似乎找不到彻底的解决方案:-(

    导出(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。