我正在实现一个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/

10-11 17:23
查看更多