【问题标题】:How to include raw data in an R package如何在 R 包中包含原始数据
【发布时间】:2020-11-03 13:42:27
【问题描述】:

我正在完成课程Building R Packages的期末作业。

在本次作业中,我们需要根据教师提供的一些示例函数创建一个 R 包。我们需要组织和记录包,然后在 GitHub 上提供它。我的包名为FARS,并且已经在这个GitHub repo 中可用。

我无法通过软件包提供原始数据。按照课程阅读中提供的说明以及本书Building R Packages 的第 14.3 章中提供的说明后,仍然无法识别文件。

到目前为止我做了什么?

  1. 准备了所有包的文档,包括roxygen2标签、DESCRIPTIONREADME.Mdvignette,在these steps之后,除了提到的阅读资料和书中提供的说明;

  2. 在包的目录下创建了一个名为inst/extdata的子目录;

  3. 将所有三个包含原始数据的示例文件 (.csv.bz2) 复制到 inst/extdata

  4. 使用testthat测试功能;

  5. 安装了我的FARS 包。

现在我正在尝试在安装软件包后检查其中一个文件是否可用:

system.file("extdata", "accident_2013.csv.bz2", 
            package = "FARS", 
            mustWork = TRUE)

我收到一条错误消息:

Error in system.file("extdata", "accident_2013.csv.bz2", package = "FARS",  : 
  no file found

这些数据文件需要随包提供,因此小插图中提供的示例可以正常工作。

【问题讨论】:

  • 我建议您去 CRAN 下载“R-exts.pdf”文件,该文件详细说明了如何在构建包时执行所有操作。
  • 谢谢!我也读过这个官方文档,项目“1.1.6 包中的数据”。不过,我没有在那里找到解决方案。看来我正在遵循建议的所有步骤,但无论如何都找不到数据文件。
  • 我最近完成了一个包含数据目录的包。让我挖掘一下,我会发布我使用的确切文件夹和 NameSpace 文件内容。
  • 太棒了!非常感谢!

标签: r dataframe file package roxygen2


【解决方案1】:

这是一个“现实生活”的例子,使用了我最近写的一个简单的包。 我在构建目录中有一个“数据”目录。
编辑为了阐明在 R-exts 中找到的 cmets,目录树 packagename/inst/extdata 用于存储您的函数直接调用的数据,通过指定该目录路径。由于您想将数据加载到工作区,请使用data 目录。
我的“数据”目录包含一个名为 preciseNumbersAsChar.r 的文件。该文件包含诸如

之类的分配

charE <- {long number string}

如果您阅读命令data 的帮助页面,它会解释以.r 结尾的文件在调用时是sourced。

library(FunWithNumbers)
data('preciseNumbersAsChar')  #works

也就是说,定义的对象现在在我的环境中。

值得详细阅读data 的帮助页面,因为不同文件类型的处理方式略有不同。

【讨论】:

  • 非常感谢!这种将文件正确存储在“数据”目录中的选项也适用于我。你的例子确实很有帮助,我会在我未来的真实世界包中按照你的方式去做。我无法开始工作的是我的家庭作业中的数据文件。讲师提供的示例函数假设您拥有三个 CSV 格式的特定数据文件。其中两个函数通过重命名这些文件或读取它们的一些变量来工作。所以我在小插图中包含了这些假设,以及文件的来源。
猜你喜欢
  • 2020-10-10
  • 2020-05-22
  • 2019-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
相关资源
最近更新 更多