在文档中,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文件夹中的所有内容都会被推送到包的/
吗?
答案 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使用的那些(目前为R
,data
,demo
,exec
,libs
,man
,help
,html
和Meta
以及早期版本 使用latex
,R-ex
)。在inst
之后复制src
已构建,因此其Makefile
可以创建要安装的文件。之前 R 2.12.2,文件安装在POSIX平台上,并具有包源中的权限,因此应注意确保 这些都不是太严格:R CMD build
会合适 调整。要排除安装文件,可以指定一个 顶级文件.Rinstignore
中的排除模式列表 源目录。这些模式应该像Perl一样规则 表达式(有关详细信息,请参阅R中regexp
的帮助), 每行一个,与文件和目录路径匹配(10), 例如doc/.*[.]png$
将根据inst/doc
排除所有PNG文件 (小写)扩展名。