Recherche…


Introduction

Si vous souhaitez appliquer systématiquement une analyse R à de nombreux fichiers de données distincts ou fournir une méthode d'analyse reproductible à d'autres personnes, un script R exécutable est un moyen convivial de le faire. Au lieu que vous ou votre utilisateur ayez à appeler R et à exécuter votre script dans R via source(.) Ou un appel de fonction, votre utilisateur peut simplement appeler le script lui-même comme s'il s'agissait d'un programme.

Remarques

Pour représenter les canaux d'entrée / sortie standard, utilisez le file("stdin") fonctions file("stdin") (entrée depuis un terminal ou un autre programme via pipe), stdout() (sortie standard) et stderr() (erreur standard). Notez que bien qu'il y ait la fonction stdin() , elle ne peut pas être utilisée lors de la fourniture d'un script prêt à l'emploi à R, car elle lira les lignes suivantes de ce script au lieu de l'entrée utilisateur.

La structure de base du programme R autonome et comment l'appeler

Le premier script R autonome

Les scripts R autonomes ne sont pas exécutés par le programme R ( R.exe sous Windows), mais par un programme appelé Rscript ( Rscript.exe ), qui est inclus par défaut dans votre installation R

Pour ce faire, les scripts R autonomes commencent par une ligne spéciale appelée ligne Shebang , qui contient le contenu suivant: #!/usr/bin/env Rscript . Sous Windows, une mesure supplémentaire est requise, qui est détaillée plus loin.

Le script R simple autonome suivant enregistre un histogramme sous le nom de fichier "hist.png" à partir des nombres reçus en entrée:

#!/usr/bin/env Rscript

# User message (\n = end the line)
cat("Input numbers, separated by space:\n")
# Read user input as one string (n=1 -> Read only one line)
input <- readLines(file('stdin'), n=1)
# Split the string at each space (\\s == any space)
input <- strsplit(input, "\\s")[[1]]
# convert the obtained vector of strings to numbers
input <- as.numeric(input)

# Open the output picture file
png("hist.png",width=400, height=300)
# Draw the histogram
hist(input)
# Close the output file
dev.off()

Vous pouvez voir plusieurs éléments clés d'un script R autonome. Dans la première ligne, vous voyez la ligne Shebang. Suivi de cela, cat("....\n") est utilisé pour imprimer un message à l'utilisateur. Utilisez le file("stdin") chaque fois que vous souhaitez spécifier "Entrée utilisateur sur la console" comme origine de données. Cela peut être utilisé à la place d'un nom de fichier dans plusieurs fonctions de lecture de données ( scan , read.table , read.csv , ...). Une fois l'entrée utilisateur convertie des chaînes en nombres, le tracé commence. On peut voir que les commandes de traçage destinées à être écrites dans un fichier doivent être placées dans deux commandes. Ce sont dans ce cas png(.) Et dev.off() . La première fonction dépend du format de fichier de sortie souhaité (les autres choix courants étant jpeg(.) Et pdf(.) ). La deuxième fonction, dev.off() est toujours requise. Il écrit le tracé dans le fichier et termine le processus de traçage.

Préparer un script R autonome

Linux / Mac

Le fichier du script autonome doit d'abord être rendu exécutable. Pour ce faire, cliquez avec le bouton droit de la souris sur le fichier, ouvrez "Propriétés" dans le menu d’ouverture et cochez la case "Exécutable" dans l’onglet "Autorisations". Alternativement, la commande

chmod +x PATH/TO/SCRIPT/SCRIPTNAME.R

peut être appelé dans un terminal.

les fenêtres

Pour chaque script autonome, un fichier de commandes doit être écrit avec le contenu suivant:

"C:\Program Files\R-XXXXXXX\bin\Rscript.exe" "%~dp0\XXXXXXX.R" %*

Un fichier de commandes est un fichier texte normal, mais qui a une extension *.bat exception d'une extension *.txt . Créez-le en utilisant un éditeur de texte tel que notepad (pas Word ) ou similaire et mettez le nom du fichier entre guillemets "FILENAME.bat" ) dans la boîte de dialogue de sauvegarde. Pour éditer un fichier batch existant, cliquez dessus avec le bouton droit et sélectionnez "Modifier".

Vous devez adapter le code ci-dessus partout où XXX... est écrit:

  • Insérez le dossier correct où se trouve votre installation R
  • Insérez le nom correct de votre script et placez-le dans le même répertoire que ce fichier de commandes.

Explication des éléments du code: La première partie "C:\...\Rscript.exe" indique à Windows où trouver le programme Rscript.exe . La deuxième partie "%~dp0\XXX.R" indique à Rscript d'exécuter le script R que vous avez écrit et qui réside dans le même dossier que le fichier de commandes ( %~dp0 représente le dossier de fichiers par lots). Enfin, %* transfère tous les arguments de ligne de commande que vous attribuez au fichier de commandes au script R.

Si vous double-cliquez sur le fichier de commandes, le script R est exécuté. Si vous faites glisser des fichiers sur le fichier de commandes, les noms de fichiers correspondants sont donnés au script R en tant qu'arguments de ligne de commande.

Utilisation de littler pour exécuter des scripts R

littler (prononcé peu r ) ( cran ) fournit, en plus d'autres fonctionnalités, deux possibilités pour exécuter des scripts R à partir de la ligne de commande avec la commande r de littler (quand on travaille avec Linux ou MacOS).

Plus petit

De R:

install.packages("littler")

Le chemin de r est imprimé dans le terminal, comme

You could link to the 'r' binary installed in
'/home/*USER*/R/x86_64-pc-linux-gnu-library/3.4/littler/bin/r'
from '/usr/local/bin' in order to use 'r' for scripting.

Pour pouvoir appeler r depuis la ligne de commande du système, un lien symbolique est nécessaire:

ln -s /home/*USER*/R/x86_64-pc-linux-gnu-library/3.4/littler/bin/r /usr/local/bin/r

Utiliser apt-get (Debian, Ubuntu):

sudo apt-get install littler

Utiliser littler avec des scripts standard .r

Avec r de littler il est possible d'exécuter des scripts R autonomes sans modifier le script. Exemple de script:

# User message (\n = end the line)
cat("Input numbers, separated by space:\n")
# Read user input as one string (n=1 -> Read only one line)
input <- readLines(file('stdin'), n=1)
# Split the string at each space (\\s == any space)
input <- strsplit(input, "\\s")[[1]]
# convert the obtained vector of strings to numbers
input <- as.numeric(input)

# Open the output picture file
png("hist.png",width=400, height=300)
# Draw the histogram
hist(input)
# Close the output file
dev.off()

Notez qu'aucun shebang n'est en tête des scripts. Lorsqu'il est enregistré comme par exemple hist.r , il est directement appelable depuis la commande système:

r hist.r

Utilisation de petits caractères sur des scripts shebanged

Il est également possible de créer des scripts R exécutables avec littler, avec l'utilisation du shebang

#!/usr/bin/env r

en haut du script. Le script R correspondant doit être chmod +X /path/to/script.r avec chmod +X /path/to/script.r et est directement appelable depuis le terminal système.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow