Quelle est la meilleure façon d'utiliser R scripts en ligne de commande (terminal)?
C'est très pratique d'avoir R des scripts pour faire simple parcelles à partir de la ligne de commande. Toutefois, l'exécution de la R de scripts bash n'est pas pratique du tout. L'idéal pourrait être quelque chose comme
#!/path/to/R
...
ou
#!/usr/bin/env R
...
mais je n'ai pas été en mesure de faire l'une de ces travaux.
Une autre option est de garder les scripts purement dans R, par exemple script.R
, et en l'invoquant avec R --file=script.R
ou similaire. Toutefois, à l'occasion d'un script va s'appuyer sur d'obscurs commutateurs de ligne de commande à quel point la partie du code qui existe à l'extérieur du script. Exemple: se faufiler choses dans la R de bash par l'intermédiaire d'un local .Rprofile, le désiré des commutateurs sont alors tout --vanilla
implique sauf --no-init-file
.
Une autre option est un script bash pour stocker les R drapeaux et être facilement exécutable, qui appelle le script R. Le problème est que cela signifie un seul programme a juste obtenu divisé en deux fichiers qui doivent désormais être conserver la synchronisation, transféré à de nouvelles machines, etc.
L'option actuellement, je les méprise, du moins, est l'intégration de la R dans un script bash:
#!/bin/bash
... # usage message to catch bad input without invoking R
... # any bash pre-processing of input
... # etc
R --random-flags <<RSCRIPT
# R code goes here
RSCRIPT
Tout est dans un seul fichier. Il est exécutable et gère facilement les arguments. Le problème est que la combinaison de bash et R comme ce joli beaucoup élimine la possibilité de tout IDE pas de défaut sur l'un ou l'autre, et rend mon cœur blessé vraiment mal.
Est-il une meilleure façon que je suis absent?
Vous devez vous connecter pour publier un commentaire.
Contenu de
script.r
:La première ligne est la ligne shebang. Il est préférable d'utiliser
/usr/bin/env Rscript
au lieu de coder en dur le chemin d'accès à votre R installation. Sinon, vous risquez votre script de rupture sur d'autres ordinateurs.Prochain, le rendre exécutable en ligne de commande):
Invocation de la ligne de commande:
Rscript --help
à partir de la ligne de commande liste de beaucoup d'options utiles qui peuvent être ajoutés à l'arborescence, comme--vanilla
.commandArgs
de la fonction et de lagetopt
etoptparse
paquets pour l'analyse de la ligne de commande. De sorte que les arguments et les options peuvent également être transmises à vos scripts lors de l'exécution de la ligne de commande.#!/usr/bin/Rscript
(qui est pas la pratique standard pour R les scripts).Essayer littler.
littler
offre de hachage-bang (c'est à dire de script commençant par #!//chemin de la capacité pour GNU R, ainsi que de ligne de commande simple et de la tuyauterie d'utilisation.Miguel Sanchez réponse est la façon dont il devrait être. L'autre façon de l'exécution de Rscript pourrait être " env " commande à exécuter un vaste système de RScript.
env
vous permettra de lancer la premièreRscript
trouvé dans votre propre$PATH
, permettant ainsi à l'un de réellement exécuter quelque chose de autres que l'ensemble du système par défaut/Rscript
(qui ne peut pas être installé dans/usr/whatever
). Je vous conseille d'utiliserenv
pourR
etRscript
choses, depuis, en particulier, ne peuvent pas être installés dans des endroits standard. (Ordinairebash
scripts peuvent toutefois généralement en toute sécurité, utilisez toujours#!/bin/bash
.)/bin/sh
. Tout le reste doit utiliserenv
de recherche. En particulier, le plus souvent Bash est obsolète sur des clusters de calcul et les utilisateurs disposent de leurs propres installations (généralement dans~/.local/bin
, ou partagée dans quelque chose comme un/software
montage NFS). De même, sur macOS,/bin/bash
est toujours obsolète en raison de problèmes de licence, et une mise à jour de Bash est le plus souvent situé à/usr/local/bin/bash
(je me rends compte que votre commentaire est de 3 ans, mais c'est assez important)./bin/sh
est, dans tous les cas, pas aussi "dangereux", alors vous devez admettre que la même chose pourrait être dite pour/bin/bash
. À l'aide deenv
est de plus en plus imprévisibles, en raison de fiable/incompatiblePATH
paramètres pour les différents utilisateurs, mais chaque R l'utilisateur peut effectivement que ce comportement, alors quebash
scripts ne le font pas. Enfin, pour la CI/cloud invocation de nouveaux scripts bash, il suffit de les appeler à l'aide/path/to/my/bash myscript
ou de définir explicitement le chemin & appelez-les à l'aide deenv script
. EOT#!/path/to/R
ne fonctionnera pas parce que R est lui-même un script, ilexecve
est malheureux.- Je utiliser
R --slave -f script
Rscript
(etlittler
), dans le cas où vous vous poseriez la question.Si vous êtes intéressé dans l'analyse des arguments de ligne de commande à un script R essayer RScript qui est livré avec R à partir de la version 2.5.x
http://stat.ethz.ch/R-manual/R-patched/library/utils/html/Rscript.html
Cela fonctionne,
mais je ne sais pas ce qui se passe si vous avez plus de 1 version de R installé sur votre machine.
Si vous le faites comme ce
il dit à l'interprète de juste utiliser quelle que soit la R apparaît en premier sur votre chemin.
Juste une remarque à ajouter à ce poste. Les versions ultérieures de
R
semblent avoir enterréRscript
un peu. Pour R 3.1.2-1 sur OSX téléchargé Jan 2015 j'ai trouvéRscript
dansAinsi, au lieu de quelque chose comme
#! /sw/bin/Rscript
, j'avais besoin d'utiliser la suivante au début de mon script.La
locate Rscript
pourrait être utile pour vous.#!/usr/bin/env Rscript
au lieu d'un codée en dur chemin dansR
scripts (et d'ajouter que d'un long chemin de votre$PATH
)Si le programme que vous utilisez pour exécuter votre script doit paramètres, vous pouvez les mettre à la fin de l' #! ligne:
Ne sachant pas R, je ne peux pas tester correctement, mais cela semble fonctionner:
Vous pouvez utiliser python rpy2 module. Cependant, la "bonne" façon de le faire est avec R CMD BATCH. Vous pouvez modifier cette fonction pour écrire sur la sortie standard, mais la valeur par défaut est d'écrire d'une .La déroute de fichier. Voir l'exemple ci-dessous:
Remarque: vous aurez envie d'essayer le --vanille et d'autres options pour enlever tous les fichiers inutiles de démarrage.
Essayer smallR pour l'écriture rapide R scripts en ligne de commande:
http://code.google.com/p/simple-r/
(
r
commande dans le répertoire)Le traçage de la ligne de commande à l'aide de smallR devrait ressembler à ceci:
littler
aurait certainement préféré (puisqu'il est encore vivant); ou, il suffit d'utiliserRscript
(ce qui est sorti aprèslittler
a été créé.)Les ouvrages suivants, pour moi, à l'aide de la pme de bash sur Windows, je n'ai pas de R sur mon Linux ne peut donc pas essayer là. Vous avez besoin de deux fichiers: le premier appelé runr exécute R avec un fichier de paramètre
Vous avez besoin pour rendre ce fichier exécutable avec chmod +x runr.
Ensuite dans votre fichier de script:
Remarque #! runr ligne pourriez avoir besoin d'inclure le chemin d'accès complet à runr, selon la façon dont vous utilisez la commande, comment votre variable PATH est définie etc.
Pas assez, mais il ne semble pas fonctionner!
Avez-vous jamais savoir que vous pouvez utiliser votre navigateur pour utiliser RStudio sur le serveur?
http://www.rstudio.com/products/rstudio/download-server/