我正在实现一个R包,在“data”文件夹中有几个大的.rda数据文件。
当我构建包(使用r cmd build创建.tar.gz压缩文件)时,包中还包含数据文件,由于它们非常大,这使得构建(以及检查)过程非常缓慢,最终的包大小也非常大。
这些数据是通过包的一个函数从某些数据库下载的,因此目的不是将数据包含在包中,而是让用户从自己的数据库填充数据文件夹。我使用的数据用于测试,将它们包含到包中是没有意义的。
总结我的问题是:是否可以将数据保存在“data”文件夹中,但将其从构建的包中排除?
编辑
好的,我通过创建包含行的名为.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’
所以,如前所述,先构建,然后检查。
哦,卢卡
关于从R包生成中排除数据集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23382030/