【问题标题】:R Package Build/Install Error: "object not found" even though I have it in R/sysdata.rdaR 包构建/安装错误:“找不到对象”,即使我在 R/sysdata.rda 中有它
【发布时间】:2017-12-13 22:43:38
【问题描述】:

类似问题

accessing sysdata.rda within package functions

为什么这个类似的问题不适用于我

他们能够实际构建它,显然这对他们来说是一个 Github 错误(不相关)

R 版

3.4.2(我也尝试使用 3.4.3 但出现同样的问题)

编辑:我在 Windows 10 上

上下文

我已完整阅读以下关于 R 包的 tutorial 以及如何在其中包含 .Rda 文件。我的DESCRIPTION 文件中的LazyData 也设置为true。我已经尝试了data/ 文件夹实现和R/sysdata.rda 实现,使用函数devtools::use_data() 以及internal = FALSEinternal = FALSE 的相应选项。

但是,当我尝试构建包或使用 devtools::install(我假设它也可以构建)时,它会失败并给我以下错误消息:

预测错误(finalModel,newInput):找不到对象“finalModel”

finalModel 存储在我的 .rda 文件中的位置。

有谁知道发生这种情况的任何可能原因吗?

我还要求一位同事在他的机器上安装该软件包,但不幸的是他得到了完全相同的错误。

我通过在 datasets::swiss 上使用 lm() 函数创建一个简单的线性模型,制作了另一个测试包作为“健全性检查”,然后使用这个新创建的模型作为 .rda 文件制作了一个测试包。当我在这个测试包中的一个函数中引用这个测试模型时,它却异常有效,尽管(据我所知)我使用完全相同的步骤来创建这个新的 R 包。

另外,很遗憾我无法分享我正在创建的包的代码,但我愿意分享使用瑞士数据集的测试包的代码。

提前谢谢你。

编辑:我放入包中的 .rda 文件是去年创建的,如果这与它有关的话。

【问题讨论】:

  • 您是否将 LadyData 设置为 true 还是将 LazyData 设置为 true
  • 使用data(finalModel) 是否允许您访问数据?
  • 抱歉,我修正了我的错字。是的,它是 LazyData。此外, data() 函数不起作用。我得到了同样的错误:“数据中的警告(finalModel):找不到数据集'finalModel'”。另外,据我了解,我不需要使用包应该能够确定我的finalModel在哪里(在sysdata.rda中)之类的功能?感谢您的回复。
  • 嗨@Dason,作为最后的手段,我决定在我的Ubuntu VM上使用我的RStudio服务器......并且成功安装了包!我的主机在 Windows 10 上,所以问题可能与 R for Windows 或 Hadley 的 devtools 包有关?
  • 如果您使用的是 LazyData,则不需要使用 data(finalModel) - 我只是问您是否尝试过,因为如果使用数据允许您实际查看 finalModel,那么它会指向延迟加载的问题。

标签: r r-package


【解决方案1】:

我刚刚解决了在包管理过程中出现object 'objectName' not found 的类似问题。就我而言,这个问题与在使用并行化时丢失变量的上下文有关。

当使用parallel::clusterExport(cl, varlist=c("function-name")) 时,clusterExport 查看.GlobalEnv 的变量定义。这不会在调试过程中出现,因为我总是在.GlobalEnv 中定义变量。解决方案是明确说明环境:parallel::clusterExport(cl, varlist=c("function-name"), envir=environment())。这确保并行进程具有data/ 文件夹和R/sysdata.rda 中变量的上下文。

Source

【讨论】:

    【解决方案2】:

    如果您有多个内部文件,则必须将它们保存在一起:

    use_data(file_1,
             file_2,
             file_3,
             internal = TRUE,
             overwrite = TRUE)
    

    【讨论】:

    • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
    猜你喜欢
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 2018-09-21
    • 1970-01-01
    相关资源
    最近更新 更多