Ich möchte ein R-Skript nennen, sagen myRfile.R
, von MatLab
. Ich verwende eine Windows 10
Maschine mit MatLab 2017a
und R-3.4.2
. Ich verwende den system
Befehl wie in einer früheren stackoverflow question. Die vorgeschlagene Lösung ist folgendes zu tun:R-Skript von MatLab aufrufen - Fehler
Add Pfad zum Installationsort von
R
. In meinem Fall schreibe ichaddpath C:\Program Files\R\R-3.4.2\bin
.Stellen Sie sicher, dass sich das R-Skript im Arbeitsverzeichnis (oder einem Pfad) befindet.
Die Funktion
system('R CMD BATCH myRfile.R')
aufrufen.
I, jedoch erhalten den Fehler-Flag = 1 ist und folgende in dem Befehlsfenster gedruckt:
‚R‘ ist, als interner oder externer Befehl nicht erkannt wird, ausführbares Programm oder Stapeldatei.
ich geprüft, um sicherzustellen, dass ich R
von cmd, indem Sie zu der entsprechenden Datei und R.exe
Aufruf ausführen kann. Wenn stattdessen nenne ich system
über:
System (' "C: \ Programme \ R \ R-3.4.2 \ bin \ x64 \ r.exe" CMD BATCH myRfile.R'); ,
dann wird das Skript korrekt ausgeführt (kein Fehler). Daher habe ich eine Lösung für mein Problem gefunden. Ich würde aber gerne die Zeichenfolge definieren
rpath = "C: \ Programme \ R \ R-3.4.2 \ bin \ x64 \ r.exe"
zu Beginn von meinem Programm und führen Sie den Befehl
System ('Rpath CMD BATCH myRfile.R');
Dies gibt einen ähnlichen Fehler wie zuvor:
‚rpath‘ wird nicht als interner oder externer Befehl erkannt, bedienbare Programm oder Batch-Datei. Fragen
:
Warum wird der Befehl
system('R CMD BATCH myRfile.R')
nicht für mich arbeiten?Warum funktioniert die
system
Befehl Arbeit, wenn ich das Verzeichnis fürR
direkt als String schreiben, aber es funktioniert nicht, wenn ich eine Zeichenfolge überRpath
es passieren?
Putting ''Rpath'' in der Mitte der Zeichenfolge übergibt die Zeichenfolge in keiner Programmiersprache, die mir bekannt ist. Verwenden Sie 'sprintf', um das String-Argument für' system' zu generieren. – excaza
Wenn Sie R zum Systempfad hinzugefügt haben, haben Sie Matlab neu gestartet? Enthält 'getenv ('PATH')' das R-Verzeichnis? (Funktioniert die [Matlab-Seite "externe Befehle ausführen"] (https://www.mathworks.com/help/matlab/matlab_external/run-external-commands-scripts-and-programs.html) Seite für Sie? – r2evans
@excaza ' System ('sprintf (Rpath) CMD BATCH Rum_81_genB_VtoH.R') 'funktioniert nicht.Es gibt den Fehler 'sprintf' ist kein erkanntes ... –