【问题标题】:R packages: "Error: object 'compute' not found whilst loading namespace .."R包:“错误:加载命名空间时找不到对象'计算'..”
【发布时间】:2018-09-26 07:14:28
【问题描述】:

我的目录结构如下:

c:/Users/bob/MyPackageName
c:/Users/bob/MyPackageName/R
c:/Users/bob/MyPackageName/tests
c:/Users/bob/MyPackageName/tests/testthat

我的开发会话通常包括在包根目录 (c:/Users/bob/MyPackageName) 中启动一个 R 会话,然后运行

devtools::load_all()
devtools::test()

然后在MyPackageName/tests/testthat/mytest.RMyPackageName/R/mycode.R 中交替添加小位。

开始会话时返回

Loading MyPackageName
Error: object 'compute' not found whilst loading namespace 'MyPackageName'

我试试:

  1. 调用explicit devtools::load_all("c:/Users/bob/MyPackageName")
  2. 正在搜索compute 的错误实例(需要包、函数名、任何内容......)。但一切都很好。
  3. Clearing 一些缓存,rm(list=ls())
  4. c:/Users/bob/MyPackageName/tests/testthat 中的会话和c:/Users/bob/MyPackageName/tests/testthat 中的另一个会话调用本地化的devtools::load_all()
  5. 通过devtools::document() 重新生成文档,以免其中的某些损坏出现问题。
  6. 删除MyPackageName/.RDataMyPackageName/.Rhistory

但什么都没有。我仍然得到Error: object 'compute' not found whilst loading namespace 'MyPackageName'

我还能尝试什么?比如什么是pre-Devtools的“全部加载”的方法?什么是“对象‘计算’”?

当我在包目录之外启动一个 R 会话时,一切都很好。因此我的 R 设置很好;这个问题是在编写 R 包的上下文中。

【问题讨论】:

    标签: r r-package r-devtools


    【解决方案1】:

    这可能是一种解决方法。也许你可以试一试。

    我在重建包时遇到了类似的错误Error: object 'compute' not found whilst ...(R 版本 3.5.0,roxygen2 版本 3.5.0)。

    我最终手动删除了NAMESPACE 中的第一行S3method(compute,...) 以重建包。

    【讨论】:

    【解决方案2】:

    如果不查看函数名称就很难判断,但这可能是一个问题,因为 ROxygen >3 现在对 S3 对象和函数都使用 @export。因此,如果您有使用点的功能,例如compute.something.cool() 而你使用 ROxygen 的 #' @export,可能会推断它是一个 S3 对象而不是一个函数。

    这在here 中有更详细的描述,但简而言之,使用导出调用明确命名您的函数:

    #' @export compute.something.cool
    

    这种方法意味着您仍然可以使用devtools::document() 来更新您的 NAMESPACE,而无需手动执行此操作。请注意,Bioconductor 不允许包使用点命名约定,可能正是出于这个原因,因此将来可能值得避免这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 2015-09-06
      相关资源
      最近更新 更多