2012-11-19 20 views
31

在本文档中,R表明,原始数据文件(未RDATA也不RDA)应该被放置在inst/extdata/瞬时和扩展数据的文件夹中的R包装

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

数据子目录用于数据文件,要么通过延迟加载或使用数据()加载 。 (选择由 在说明文件中所做的“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文件夹中发生了什么?

是否一切都在/文件夹研究所将被推入到包装的/

+0

/inst文件夹中的所有文件夹都会在软件包的顶层目录中找到自己的位置。基本上,/ inst中的所有内容都会放在最上面的目录中,因此任何文件夹都会以自己的文件夹结尾。但是,这只是从经验,我无法找到R exts中的任何东西,解释这... – Dason

+1

我只是补充说,我更喜欢file.path创建文件的路径 – Dason

回答

21

你们都非常亲密,基本上有这个。从写作R附加软件'的正式参考是:

1.1.3包装子目录

[...]

inst子目录中的内容将被递归 复制到安装目录。的inst子目录不 应与那些由R使用干扰(目前,RdatademoexeclibsmanhelphtmlMeta,和早期版本 使用latexR-ex)。之后src 建所以来安装其Makefile可以创建文件inst的复制发生。此前 [R 2.12.2,该文件安装在与包源的权限POSIX平台,所以应小心,以确保 这些都没有太多限制:R CMD build将作适当调整 。要排除被安装的文件,可以在顶级 源目录中的文件.Rinstignore指定排除模式的 列表。这些模式应该是类Perl的常规 表达式(对于精确细节,请参阅R中的regexp的帮助), 每行一个,与文件和目录路径匹配(10),例如 ,例如 。 doc/.*[.]png$将排除基于 的(小写)扩展在inst/doc所有PNG文件。

+0

感谢您。我正试图在文档中搜索“inst”。 –

44

比使用file.path是使用system.file更加有用。一旦安装你的包,你可以抓住你的文件,像这样:

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

fpath现在将对您的高清文件的绝对路径。

+2

+1有用,谢谢。 –