54

在文档中,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+

我收到“无法打开文件”错误。

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

/inst 文件夹中的所有内容是否都被推送到/包中?

4

2 回答 2

75

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

fpath <- system.file("extdata", "my_raw_data.csv", package="my_package")

fpath现在将在您的 HD 上拥有该文件的绝对路径。

于 2012-11-19T22:49:21.900 回答
40

你们都很亲近,基本上都有这个。'Writing R Extensions' 的正式参考是:

1.1.3 包子目录

[...]

子目录的内容inst将递归复制到安装目录。的子目录inst不应干扰 R 使用的那些(当前,RdatademoexeclibsmanhelphtmlMeta,以及使用的早期版本latexR-ex)。inst在构建之后发生的复制,src 因此它Makefile可以创建要安装的文件。在 R 2.12.2 之前,这些文件是使用包源中的权限安装在 POSIX 平台上的,因此应注意确保这些限制不会太严格:R CMD build将进行适当的调整。要从安装中排除文件,可以在文件中指定排除模式列表.Rinstignore在顶级源目录中。这些模式应该是类似于 Perl 的正则表达式(有关regexp详细信息,请参阅 R 中的帮助),每行一个,与文件和目录路径匹配(10),例如,doc/.*[.]png$inst/doc根据 (小写)扩展。

于 2012-11-19T22:46:01.463 回答