2016-06-29 6 views
4

Ich bin neu in Rscript so bitte mit mir, ich muss ein R-Skript (geschrieben von einem anderen Entwickler) von Java und für die ich benutze Renjin. Die R-Skriptdatei und andere erforderliche Dateien befinden sich unter classpath, d. H. Unter Ressourcenordner.R Skript nicht in der Lage zu lesen. RDA-Datei bei der Ausführung von Java

Um dies zu erreichen, ich bin Rscript von Classpath geladen und es wird erfolgreich geladen und Rscript versucht, eine Datei abc.Rda intern die auch in Classpath (parallel zum R-Skript) vorhanden ist, zu laden, ist der Code für gleiche unten

load('abc.Rda') 

Aber wenn ich versuche Skript auszuführen dann wirft es Ausnahme, wie unten:

kann nicht aus lesen "file: /// D:/data/{Projekt-dir} /abc.Rda" weil es keine Datei ist.

Bitte schlagen Sie vor, wo ich Fehler mache.

+0

Haben Sie versucht, absolute Dateipfad zu funktionieren? –

+0

Yup versuchte das, aber das Problem ist das gleiche – Apollo

+0

Ich habe verschiedene Tests ausprobiert, aber war nicht in der Lage, irgendwelche Fehler zu erzeugen: einzelne, doppelte Anführungszeichen, großgeschriebene Dateierweiterung, wenn der aktuelle Kleinbuchstabe usw. 'save (d, Datei = 'abc.rda') '' load ('abc.Rda') ' – Bobby

Antwort

1

Ich bin nicht sicher, warum die Verwendung des absoluten Pfades nicht funktionierte: vielleicht ruft das Skript früher irgendwo setwd(dir='/bad/{project-dir}') auf?

Renjin vermittelt tatsächlich Dateisystemvorgänge durch Apache Virtual File System (VFS). Also, wenn Sie speziell eine Ressource auf dem Classpath wollen, können Sie das „res:“ verwenden Protokoll, zum Beispiel:

load('res:com/acme/mypackage/abc.Rda') 

Dies sollte funktionieren, ob die Datei tatsächlich auf dem Dateisystem oder als Teil einer Dose verpackt oder anderes Archiv