【问题标题】:Object not found after installing and loading package安装和加载包后找不到对象
【发布时间】:2016-07-22 14:48:33
【问题描述】:

我已将一堆实用程序功能整合到一个包中。但是,安装软件包后,我似乎无法访问它们。我收到Error: object 'function_name' not found

形式的错误
  1. 构建包,没有错误信息
  2. 从源安装包,没有错误信息
  3. 加载包,没有错误信息(library() 也没有require())
  4. 加载后即可访问包文档
  5. 我正在使用 roxygen2 来生成文档和命名空间

有什么想法吗?

【问题讨论】:

  • 您是否创建了一个 NAMESPACE 并导出了您想要提供的所有功能?

标签: r


【解决方案1】:

您是否使用了 NAMESPACE 而忘记添加相关对象?

如果您使用的是 roxygen2,您是否记得将 #' @export function_name 添加到要包含在命名空间中的函数中?

【讨论】:

  • 有一个名为 NAMESPACE 的文件,但不是我自己创建的。它是空的 - 里面应该有什么?
  • 我认为您在前面最优秀的“编写 R 扩展”手册中进行了一些简单的阅读 :) “[r] NAMESPACE”搜索结果中还有几十个帖子。二十分钟后一切都会一清二楚,但你必须做那些跑腿的工作。
  • 找到了。谢谢 - exportPattern("^[^\\.]")
  • 是的,这可以解决问题——或者手动编辑 NAMESPACE 文件(尽管邪恶的 rozygen2 女巫可能会覆盖该更改)。
  • 如果您没有任何命名空间指令,Roxygen2 不应覆盖命名空间。但我真的建议手动导出你想要的功能。它的开发实践要好得多。
【解决方案2】:

如果函数名没有导出,可能需要使用“:::”

pkgname:::function_name

我相信 CRAN 现在需要一个 NAMESPACE,我认为 R 2.14.x 甚至可能需要它们。

【讨论】:

  • 如果 R 2.14 包没有 NAMESPACE,那么 R 2.14 构建的包将添加一个 NAMESPACE 导出所有对象并导入 Imports 或 Depends 中列出的所有内容。
  • @G.Grothendieck 很有趣。我想知道 R 查看 NAMESPACE 文件并查看它是否实际上包含任何内容是否不明智。我有一个空的 NAMESPACE,这就是我的问题所在。
【解决方案3】:

对我来说同样的问题,您需要更改 NAMESPACE 文件。有时 NAMESPACE 的内容是这样的:

# Generated by roxygen2: do not edit by hand

但是你需要手动修改,像这样:

# Generated by roxygen2: do not edit by hand 
export("function_name1", "function_name2")

或使用exportPattern("^[^\\.]") 导出所有函数。

【讨论】:

    猜你喜欢
    • 2020-10-13
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多