如何将外部数据文件添加到开发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.csv
(DESCRIPTION
所在的位置)。您可以将所有要访问的文件放在该目录中。
然后获取函数示例或您的小插图中的文件:
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()
应该会为您将所有文件的内容读取到一个列表中。
我正在 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.csv
(DESCRIPTION
所在的位置)。您可以将所有要访问的文件放在该目录中。
然后获取函数示例或您的小插图中的文件:
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()
应该会为您将所有文件的内容读取到一个列表中。