2014-04-30 6 views
5

Ich implementiere ein R-Paket, in dem ich mehrere große .rda-Dateien im Ordner 'data' habe.Datensätze aus R-Paket-Build ausschließen

Wenn ich das Paket baue (mit R CMD build, um die .tar.gz gepackte Datei zu erstellen), sind auch die Datendateien im Paket enthalten, und da sie wirklich groß sind, macht dies den Build (sowie den check) Prozess sehr langsam und die endgültige Paketgröße nutzlos groß.

Diese Daten werden von einer bestimmten DB über eine Funktion des Pakets heruntergeladen. Daher ist es nicht beabsichtigt, die Daten in das Paket aufzunehmen, sondern den Benutzer den Datenordner aus seiner eigenen Datenbank aufzufüllen. Die Daten, die ich verwende, sind für den Test, und es macht keinen Sinn, sie in das Paket aufzunehmen.

Zusammenfassend meine Frage ist: ist es möglich, die Daten im Ordner "Daten" zu halten, aber sie aus dem gebauten Paket auszuschließen?

bearbeiten

Ok, fand ich eine erste Lösung, die durch eine Datei .Rbuildignore, die eine Zeile enthält Namen erstellen:

^data/.+$ 

ohnehin das Problem bleibt für die R CMD installieren und R CMD Kontrollprozesse, die die .Rbuildignore Datei nicht berücksichtigen.

Jeder Vorschlag, einen Ordner auch von den Installations-/Prüfprozessen auszuschließen?

Antwort

4

Wenn Sie .Rbuildignore verwenden, sollten Sie zuerst bauen dann überprüfen Sie Ihr Paket (es ist kein Check-Ignorieren). Hier ein paar Tests in einem Debian-Umgebung und ein zufälliges Paket:

[email protected]:~/src/yapomif/pkg$ ls 
data DESCRIPTION man NAMESPACE R 

[email protected]:~/src/yapomif/pkg$ R 
> save(Formaldehyde, file = "data/formal.rda") 

[email protected]:~/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 

[email protected]:~/src/yapomif/pkg$ ls -l data/ 
totale 4 
-rw-r--r-- 1 l l 229 mag 1 01:31 formal.rda 

Jetzt erstelle ich genau Ihre .Rbuildignore

[email protected]:~/src/yapomif/pkg$ em .Rbuildignore 
[email protected]:~/src/yapomif/pkg$ cat .Rbuildignore 
^data/.+$ 

Ok wir bauen

[email protected]:~/src/yapomif/pkg$ cd .. 
[email protected]:~/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’ 

Fein (die Meldung über yapomif/Daten). Überprüfen Sie nun das Paket

[email protected]:~/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) 
... 

... alles wie gewohnt

Nun wollen wir die Datei überprüfen (verschoben zu Home-Verzeichnis mein Entwicklung dir sauber zu halten)

[email protected]:~/src/yapomif$ mv yapomif_0.8.tar.gz ~ 
[email protected]:~/src/yapomif$ cd 
[email protected]:~$ tar xvzf yapomif_0.8.tar.gz 
[email protected]:~$ ls yapomif 
DESCRIPTION man NAMESPACE R 

so gibt es keine Datenverzeichnis

ABER wenn

[email protected]:~/src/yapomif$ R CMD check pkg 

... 

Undocumented data sets: 
    ‘Formaldehyde’ 

Also, wie gesagt, erst bauen, dann überprüfen.

HTH, Luca

+1

@Nicola Ich hoffe, meine Tests waren nützlich, da jetzt ist es die nächste Stufe ... aber können Sie nicht verwenden, um die Funktion kleine Datensatz abrufen irgendwo im Internet, um die Vignette zu machen vollständig reproduzierbar? –