Je voudrais appeler un script R, disons myRfile.R
, à partir de MatLab
. J'utilise une machine Windows 10
avec MatLab 2017a
et R-3.4.2
. J'utilise la commande system
comme suggéré dans une précédente stackoverflow question. La solution est de faire ce qui suit:Appelez le script R de MatLab - Erreur
Ajouter un chemin à l'emplacement d'installation de
R
. Dans mon cas, j'écrisaddpath C:\Program Files\R\R-3.4.2\bin
.Assurez-vous que le script R se trouve dans le répertoire de travail (ou un chemin d'accès).
Appelez la fonction
system('R CMD BATCH myRfile.R')
.
I, cependant, obtenir l'indicateur d'erreur = 1 et la suivante est imprimée dans la fenêtre de commande:
« R » est pas reconnu comme une commande interne ou externe, programme exécutable ou fichier batch.
Je vérifia que je peux courir R
de cmd en naviguant dans le fichier approprié et d'appeler R.exe
. Si, au contraire, je l'appelle system
via:
système ('C: \ Program Files \ R \ R-3.4.2 \ bin \ x64 \ r.exe "CMD LOT myRfile.R'); ,
puis le script est exécuté correctement (pas d'erreur). Par conséquent, j'ai trouvé une solution à mon problème. Cependant, je voudrais définir la chaîne
RPATH = "C: \ Program Files \ R \ R-3.4.2 \ bin \ x64 \ r.exe"
au début de mon programme et exécutez la commande
système ('Rpath CMD BATCH myRfile.R');
Cela renvoie une erreur semblable comme précédemment:
« rpath » est pas reconnu comme une commande interne ou externe, programme exécutable ou un fichier de commandes.
Questions:
Pourquoi la commande
system('R CMD BATCH myRfile.R')
fonctionne pas pour moi?Pourquoi le travail de commande
system
si j'écris le répertoire pourR
directement sous forme de chaîne, mais il ne fonctionne pas si je passe une chaîne viaRpath
à elle?
Mettre '' Rpath '' au milieu de la chaîne ne passe pas la chaîne dans tout langage de programmation que je connais. Utilisez 'sprintf' pour générer l'argument de chaîne à' system'. – excaza
Lorsque vous avez ajouté R au chemin d'accès du système, avez-vous redémarré matlab? Est-ce que 'getenv ('PATH')' inclut le répertoire R? (Est-ce que la page [exécuter des commandes externes de Matlab] (https://www.mathworks.com/help/matlab/matlab_external/run-external-commands-scripts-and-programs.html) fonctionne pour vous? – r2evans
@excaza ' system ('sprintf (Rpath) CMD BATCH Rum_81_genB_VtoH.R') 'ne fonctionne pas.Il retourne l'erreur 'sprintf' n'est pas reconnu ... –