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

时间:2016-12-01 16:12:26

标签: r rstudio r-package

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

```

如何使用此数据将外部数据加载到我的包中以编译包装晕影?点击inst/时,为什么devtools::installl()未创建?任何人都可以帮我怎么做?提前谢谢:)

1 个答案:

答案 0 :(得分:3)

您应该在项目的基本目录中手动创建inst/extdata/file.csv(其中DESCRIPTION是)。您可以将要访问的所有文件放在该目录中。

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

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

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