我正在实现一个 R 包,其中的“data”文件夹中有几个大的 .rda 数据文件。
当我构建包时(使用 R CMD build 创建 .tar.gz 打包文件),数据文件也包含在包中,并且由于它们非常大,这使得构建(以及检查) 过程很慢,而且最终的包大小无用大。
这些数据是通过包的一个功能从某个数据库下载的,所以目的不是将数据包含在包中,而是让用户从自己的数据库中填充数据文件夹。我使用的数据是用于测试的,将它们包含在包中是没有意义的。
总结我的问题是:是否可以将数据保留在“数据”文件夹中,但将它们从构建的包中排除?
编辑
好的,我通过创建一个名为 .Rbuildignore
的文件找到了第一个解决方案,其中包含一行:
^data/.+$
无论如何,问题仍然存在于 R CMD 安装和 R CMD 检查过程中,没有考虑到 .Rbuildignore
文件。
有什么建议将文件夹也排除在安装/检查过程之外吗?
最佳答案
如果你使用 .Rbuildignore
你应该先构建然后检查你的包(这不是检查忽略)。这里在Debian环境和随机包中进行一些测试:
l@np350v5c:~/src/yapomif/pkg$ ls
data DESCRIPTION man NAMESPACE R
l@np350v5c:~/src/yapomif/pkg$ R
> save(Formaldehyde, file = "data/formal.rda")
l@np350v5c:~/src/yapomif/pkg$ ls -l
totale 20
drwxr-xr-x 2 l l 4096 mag 1 01:31 data
-rw-r--r-- 1 l l 349 apr 25 00:35 DESCRIPTION
drwxr-xr-x 2 l l 4096 apr 25 01:10 man
-rw-r--r-- 1 l l 1189 apr 25 00:33 NAMESPACE
drwxr-xr-x 2 l l 4096 apr 25 01:02 R
l@np350v5c:~/src/yapomif/pkg$ ls -l data/
totale 4
-rw-r--r-- 1 l l 229 mag 1 01:31 formal.rda
现在我创建你的 .Rbuildignore
l@np350v5c:~/src/yapomif/pkg$ em .Rbuildignore
l@np350v5c:~/src/yapomif/pkg$ cat .Rbuildignore
^data/.+$
好的,让我们构建
l@np350v5c:~/src/yapomif/pkg$ cd ..
l@np350v5c:~/src/yapomif$ R CMD build pkg
> tools:::.build_packages()
* checking for file ‘pkg/DESCRIPTION’ ... OK
* preparing ‘yapomif’:
* checking DESCRIPTION meta-information ... OK
* checking for LF line-endings in source and make files
* checking for empty or unneeded directories
Removed empty directory ‘yapomif/data’
* building ‘yapomif_0.8.tar.gz’
很好(您会看到有关 yapomif/data 的消息)。现在检查包装
l@np350v5c:~/src/yapomif$ R CMD check yapomif_0.8.tar.gz
> tools:::.check_packages()
* using log directory ‘/home/l/.src/yapomif/yapomif.Rcheck’
* using R version 3.1.0 (2014-04-10)
* using platform: x86_64-pc-linux-gnu (64-bit)
...
...一切如常
现在让我们检查文件(移动到主目录以保存我的 开发目录干净)
l@np350v5c:~/src/yapomif$ mv yapomif_0.8.tar.gz ~
l@np350v5c:~/src/yapomif$ cd
l@np350v5c:~$ tar xvzf yapomif_0.8.tar.gz
l@np350v5c:~$ ls yapomif
DESCRIPTION man NAMESPACE R
所以没有数据目录
如果
l@np350v5c:~/src/yapomif$ R CMD check pkg
...
Undocumented data sets:
‘Formaldehyde’
因此,如上所述,首先构建,然后检查。
HTH,卢卡
https://stackoverflow.com/questions/23382030/