R Packaging中的inst和extdata文件夹

Bra*_*sen 41 r package

在文档中,R建议放入原始数据文件(不是Rdata或Rda) inst/extdata/

来自第一段:http://cran.r-project.org/doc/manuals/R-exts.html#Data-in-packages

data子目录用于数据文件,要么通过延迟加载提供,要么使用data()加载.(选择是由DESCRIPTION文件中的'LazyData'字段进行的:默认情况下不会这样做.)它不应该用于包所需的其他数据文件,并且约定已经成长为使用目录inst /这些文件的extdata.

所以,我已将所有原始数据移动到此文件夹中,但是当我构建并重新加载包然后尝试使用(例如)访问函数中的数据时:

read.csv(file=paste(path.package("my_package"),"/inst/extdata/my_raw_data.csv",sep="")) 
# .path.package is now path.package in R 3.0+
Run Code Online (Sandbox Code Playgroud)

我收到"无法打开文件"错误.

但是,它确实看起来/extdata在包目录中调用了一个文件夹,其中包含文件(构建后和安装后).该/inst文件夹发生了什么?

/ inst文件夹中的所有内容都会被推入/包中吗?

Ste*_*lou 60

比使用更有用的file.pathsystem.file.安装软件包后,您可以像这样获取文件:

fpath <- system.file("extdata", "my_raw_data.csv", package="my_package")
Run Code Online (Sandbox Code Playgroud)

fpath 现在将HD上的绝对路径放到文件中.

  • 如果您使用 {devtools} `system.file` 将被类似的函数覆盖,该函数将返回您期望的内容 (2认同)

Dir*_*tel 30

你们都很亲密,基本上都有这个.来自'Writing R Extensions'的正式参考是:

1.1.3包子目录

[...]

inst子目录的内容将以递归方式复制到安装目录中.的子目录inst不应当与由R使用干扰(目前R,data,demo, exec,libs,man,help,htmlMeta,并用于早期版本latex,R-ex). 建立inst之后发生的复制,src因此它Makefile可以创建要安装的文件.在R 2.12.2之前,文件安装在具有包源中的权限的POSIX平台上,因此应注意确保这些文件不会过于严格:R CMD build将进行适当的调整.要排除安装文件,可以在文件中指定排除模式列表.Rinstignore在顶级源目录中.这些模式应该是类似Perl的正则表达式(请参阅regexpR中的帮助以获取精确的详细信息),每行一个,与文件和目录路径匹配(10),例如doc/.*[.]png$inst/doc基于(不包括所有PNG文件)小写)扩展.