2010-12-07 4 views
3

Ich habe ein einfaches Shell-Skript, das meine Roxygen-Dokumente erstellt, das Paket erstellt, prüft und dann das neu erstellte Paket auf meinem Computer installiert. Es ist ganz einfach:Roxygen, Paketerstellung und Verwendung. Rd2 = TRUE

#! /bin/sh 
R CMD roxygen -d myPackage 
R CMD build myPackage/ 
R CMD check myPackage_0.01.tar.gz 
R CMD INSTALL myPackage myPackage_0.01.tar.gz 

Aber ich habe Probleme mit Roxygen meine .onLoad() Funktion als described previously on StackOverflow Aufnehmen. Die Lösung besteht darin, die Option use.Rd2 = TRUE mit roxygenize zu verwenden. Nun möchte ich von der Eingabeaufforderung bauen, so dass ich diese Linie geändert

R CMD roxygen -d myPackage 

auf die folgende Zeile, die eine roxygenize Linie R durch die stdin schubst:

echo 'require("roxygen"); roxygenize("myPackage", roxygen.dir="myPackage", 
    copy.package=FALSE, use.Rd2=TRUE)' | R --no-save < /dev/stdin 

Diese scheint nur zu arbeiten Dandy. Aber es fühlt sich ein wenig verworren an. Gibt es einen leichteren und/oder eleganteren Weg?

+0

Wenn es funktioniert, was nicht? –

+0

Nun, ich erinnere mich, einmal ein rJava-Problem zu beheben, indem ich die Umgebungsvariable JAVA_HOME manuell editierte. Obwohl das funktionierte, scheint es suboptimal zu sein. Also dachte ich, ich würde sicherstellen, dass ich einen ähnlichen Fehler nicht wiederholen würde. –

+1

Ich benutze ein Makefile, das grundsätzlich dasselbe ausführt. Wie Dirk sagte, wenn es funktioniert, funktioniert es ... aber wenn es nicht kaputt ist, wird ein Programmierer normalerweise versuchen, es trotzdem zu beheben. : p – Sharpie

Antwort

2

Ich mache etwas ähnliches, aber ich benutze ein HERE-Dokument im Shell-Skript, damit es sauberer aussieht.

#!/bin/sh 
## 
## 
## Must be run from the parent of the package directory (no options 
## to change target of check or tarball!?!) 

PACKAGE="analyzeNMON" 
VERSION=$(awk -F": +" '/^Version/ { print $2 }' ${PACKAGE}/DESCRIPTION) 

R --no-restore --slave <<EOR 
    library(roxygen) 
    roxygenize(package.dir="${PACKAGE}", 
      roxygen.dir="${PACKAGE}", 
      use.Rd2=TRUE, 
      overwrite=TRUE, 
      copy.package=FALSE, 
      unlink.target=FALSE) 
EOR 

R CMD build ${PACKAGE} 
R CMD check ${PACKAGE}_${VERSION}.tar.gz 
R CMD INSTALL ${PACKAGE}_${VERSION}.tar.gz 

Der Code R ist sehr ähnlich, die im Skript während R CMD roxygen laufen.

Die roxygen, die auf meinem System (Version 0.1; installiert von CRAN diese Woche) installiert ist, scheint nicht die -s Option oben erwähnt zu unterstützen ...

2

Kann die R CMD roxygen -s Option wird hier helfen. Ich glaube, es ist effektiv das gleiche wie Einstellung use.Rd2=TRUE in der roxygenize Funktion.

+0

Ich habe das nicht bemerkt. Vielen Dank! –

Verwandte Themen