在文档中,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文件夹中的所有内容都会被推入/包中吗?
据"写作R附加"手册中,有三个目录,其中RDA文件可以放在:/R,/data,/inst/extdata
很难从手册中解读最佳实践.有人可以评论何时/为何将RDA文件放在这三个目录中的每一个中.
以下是我正在解决的具体案例:
我有1个RDA文件,将用于函数示例以及我的test_that测试(所有这些都存在于inst/tests中)
我有一个包,其中包含一个 csv 文件,我将其放入每个 R-exts 的 inst/extdata 中。小插图需要此文件。如果我直接编织小插图,一切正常。但是,当我运行 R --vanilla CMD check 时,检查过程找不到该文件。我知道它在检查过程中已移入 .Rcheck 目录,这可能是问题的一部分。但我不知道如何设置它,所以直接 Sweave 和小插图构建/检查都有效。
小插图包含这样一行:
EC1 <- dot2HPD(file = "../inst/extdata/E_coli/ecoli.dot",
node.inst = "../inst/extdata/E_coli/NodeInst.csv",
Run Code Online (Sandbox Code Playgroud)
函数 dot2HPD 通过以下方式访问文件:
ni <- read.csv(node.inst)
Run Code Online (Sandbox Code Playgroud)
这是错误消息:
> tab <- read.csv("../inst/extdata/E_coli/NodeInst.csv")
Warning in file(file, "rt") :
cannot open file '../inst/extdata/E_coli/NodeInst.csv': No such file or directory
When sourcing ‘HiveR.R’:
Error: cannot open the connection
Execution halted
Run Code Online (Sandbox Code Playgroud)
顺便说一句,这与此问题有关,但该信息似乎已过时并且并未完全涵盖该领域。
我在 Mac 上。