R Packaging中的inst和extdata文件夹

时间:2012-11-19 22:05:02

标签: 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+

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

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

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

2 个答案:

答案 0 :(得分:56)

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

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

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

答案 1 :(得分:26)

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

  

1.1.3包子目录

     

[...]

     

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