我正在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()
未创建?任何人都可以帮我怎么做?提前谢谢:)
答案 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()
应该会将所有文件的内容读入一个列表中。