如何将外部数据文件添加到开发R包中?

How to add external data file into developing R package?

我正在 Rstudio 中构建我的 R 包,当我厌倦了创建包的小插图时,我 运行 遇到了一些意想不到的问题。当我在 Rstudio 中点击 build/load 面板时,我得到了小插图错误,同时创建了包的文档。为了可能解决我得到的小插图错误,我必须将外部数据添加到我的包中,使用这些数据相应地编译包小插图。我使用 devtools::install() 命令来安装我的包,但是没有创建 inst/ 目录。 extdata 必须位于 inst 目录中。我还使用 devtools::use_data() 从我的 PC 添加我的数据,但我无法添加我的外部数据。如何为我的包加载外部数据?我想我不应该手动创建 extdata 并将外部数据放在那里。为什么我使用 devtools::install() 时没有创建 inst/ ?如何将一组 csv 文件作为外部数据添加到我的包中?

这是我将在我的小插图中用来读取外部数据的玩具辅助函数:

myFunc <- function(myDir, ...) {
  files <- list.files(myDir, full.names = TRUE, "\.csv$")
  readMe <- lapply(files, read.csv)
  return(readMe)
}

这是我第一次构建 R 包,遇到一些常见错误。如果我的问题没有得到很好的说明,我深表歉意。

inst/中查找文件,我需要使用system.file(),但我没有这个目录,加上myFunc接受文件目录来抓取文件并读取它们作为 .csv,这是可以在小插图文件中执行的玩具代码块:

```{r}
library(myPkg)
file.1 <- system.file("extdata", "xxx.csv", "myPkg")
file.2 <- system.file("extdata", "yyy.csv", "myPkg")
myFunc(list(file.1, file.2))

```

如何将外部数据加载到我的包中,以便使用此数据编译包 vignette?为什么 inst/ 在我点击 devtools::install() 时没有创建?谁能帮我怎么做?提前致谢:)

您应该在项目的基目录中手动创建 inst/extdata/file.csvDESCRIPTION 所在的位置)。您可以将所有要访问的文件放在该目录中。

然后获取函数示例或您的小插图中的文件:

files <- lapply(list.files(system.file('extdata', package = 'my_package'), full.names = TRUE), read.csv)

system.file() returns extdata 文件夹的路径,然后 list.files() 将创建 extdata 中所有文件的向量。最后,运行 lapply()read.csv() 应该会为您将所有文件的内容读取到一个列表中。