Scripts R

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Jérôme Avond
Messages : 10
Enregistré le : 25 Juil 2008, 13:28

Scripts R

Messagepar Jérôme Avond » 06 Aoû 2008, 13:47

Salut à tous,

Comment peut on créer des scripts *.R executable sous windows ???

Je les lance avec C:\Program Files\R\R-2.7.1\bin\Rscript.exe

Mais malheureusement mes Readline() ne restent pas et n'attendent pas de réponses...

Why?

Cordialement,
Le lire c'est bien, mais le R c'est mieux.

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 07 Aoû 2008, 08:14

Voir le manuel "An introduction to R" (livré avec R), appendix B.

Renaud

Jérôme Avond
Messages : 10
Enregistré le : 25 Juil 2008, 13:28

Messagepar Jérôme Avond » 07 Aoû 2008, 08:29

Renaud Lancelot a écrit :Voir le manuel "An introduction to R" (livré avec R), appendix B.

Renaud


Honnêtement c'est pas super clair...

Je vois ces deux options...

Code : Tout sélectionner

‘-e expression’
Use expression as an input line. One or more ‘-e’ options can be used, but not
together with ‘-f’ or ‘--file’. Implies ‘--no-save’ unless ‘--save’ has been set.
(There is a limit of 10,000 bytes on the total length of expressions used in this way.)
‘--no-readline’
(UNIX only) Turn off command-line editing via readline. This is useful when running
R from within Emacs using the ESS (“Emacs Speaks Statistics”) package. See
Appendix C [The command-line editor], page 87, for more information.


Mais je ne veux pas "no-readline" je veux l'inverse justement et sans rien mettre ça ne marche pas
Le lire c'est bien, mais le R c'est mieux.

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 07 Aoû 2008, 08:41

Continuer la lecture jusqu'au paragraphe "Invoking R under Windows"

Renaud

Jérôme Avond
Messages : 10
Enregistré le : 25 Juil 2008, 13:28

Messagepar Jérôme Avond » 07 Aoû 2008, 08:53

Renaud Lancelot a écrit :Continuer la lecture jusqu'au paragraphe "Invoking R under Windows"

Renaud


Sympa de jouer à cache cache mais je comprends vraiment pas j'ai tester tout les test.bat possible

R CMD --sdi C:\transforme_resultats.R
R CMD --mdi C:\transforme_resultats.R
R CMD --sdi < C:\transforme_resultats.R

rien à faire mon n=readline("test? ") ne s'affiche pas...
Le lire c'est bien, mais le R c'est mieux.

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 07 Aoû 2008, 09:23

OK, reprenons à la base...

R peut se lancer de différentes manières. Sous Windows, vous pouvez (entre autres):

* utiliser l'interface graphique RGui, ce qui ouvre la console R à partir de laquelle vous pouvez exécutez du code à la ligne de commande ou sourcer des fichiers de code à l'aide de la fonction source(),

* utiliser le terminal R à partir du shell (ligne de commande DOS), ce qui permet une utilisation en mode batch.

Je pense que c'est la seconde possibilité qui vous intéresse. Si votre variable d'environnement PATH est correctement configurée:

1. Ouvrir la ligne de commande
2. Vous positionner dans le répertoire où est votre fichier à exécuter (par exemple, mon_code.R)
3. taper ensuite:
Rterm -f mon_code.R

Rterm --help vous donnera la liste des options du terminal R.

Vous pouvez bien sûr regrouper les étapes 1, 2 et 3 dans un fichier *.bat

Voir aussi la FAQ pour Windows n° 2.12, ainsi que ?BATCH

Renaud

Jérôme Avond
Messages : 10
Enregistré le : 25 Juil 2008, 13:28

Ok

Messagepar Jérôme Avond » 07 Aoû 2008, 09:58

Bon et ben tu tape dans un texte "test.R"

Code : Tout sélectionner

test=function() {
 
   n=readline("test? ")
   if (n="O") print("Youpi!")
}

test()



Et tu m'explique comment tu le fait marcher en faisant simplement double clique sur le fichier test.R, parce que tout ce que tu m'as expliqué ou fait lire ne fonctionne pas
Le lire c'est bien, mais le R c'est mieux.

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 07 Aoû 2008, 10:22

Bonjour,

Je ne crois pas que windows puisse comprendre une execution de .R par le double clic. Renaud mentionne bien les possibilités d'execution du code en S. :

-la fenêtre GUI classique
-passer par les commandes dos, c'est à dire en executant au préalable une invite de commande MS dos par laquelle on lira le fichier .bat (mode batch) créé à partir d'un txt ou du .R

Mais de ce que j'en sais ça s'arrête là. POur windows il me semble qu'il faut forcément un executable qui interviennet quelque part or les .R ne font pas appel à des executable directement. Pour windows ils s'apparentent plutôt à des .txt d'où l'ouverture du bloc note en général.

Il y a peut être un moyen en écrivant un executable mais ça devient lourd et à mon avis inutile.

Nicolas

Jérôme Avond
Messages : 10
Enregistré le : 25 Juil 2008, 13:28

ok

Messagepar Jérôme Avond » 07 Aoû 2008, 10:35

Je dois pas être clair :

Ça marche!

Un double clic sur un fichier .R, au début dow$ demande avec quoi l'ouvrir puis on va chercher Rscript.exe et ça marche ok? Il effectue les actions de lecture d'un fichier et d'écriture d'un autre avec read.table et write.table

Sauf pour ce qui est du readline, le "n=readline("attends! ")" ne fonctionne pas, et je ne sais pas pourquoi...

Cela permettrait de faire une mini interface qui permette une interaction avec le programme, mais ça ne marche pas... Alors j'ai fait deux scripts différents en attendant vos réponses :)
Le lire c'est bien, mais le R c'est mieux.

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Re: Ok

Messagepar Renaud Lancelot » 07 Aoû 2008, 12:35

Jérôme Avond a écrit :Bon et ben tu tape dans un texte "test.R"

Code : Tout sélectionner

test=function() {
 
   n=readline("test? ")
   if (n="O") print("Youpi!")
}

test()



Et tu m'explique comment tu le fait marcher en faisant simplement double clique sur le fichier test.R, parce que tout ce que tu m'as expliqué ou fait lire ne fonctionne pas


1. NE PAS UTILISER "=" comme opérateur d'affectation

2. Ne pas confondre "=" et "=="

Là, vous avez fait les deux dans la même fonction: bel effort !

3. C'est readLines et pas readline

4. Il vaudrait mieux utiliser scan

5. L'utilisation suivante fonctionne pour moi en utilisant Rgui:

Code : Tout sélectionner

> foo <- function(){
+   cat("test (O/N) ? ")
+   n <- scan(n = 1, what = "character")
+   if(n == "O") print("Youpi !")
+   }
>   
> foo()
test (O/N) ? 1: O
Read 1 item
[1] "Youpi !"


Renaud

Jérôme Avond
Messages : 10
Enregistré le : 25 Juil 2008, 13:28

Messagepar Jérôme Avond » 07 Aoû 2008, 12:42

Oui bon ct un exemple

Bon nul doute que cette fonction "fonctionne" (arf! :P ) dans le gui, ce n'est pas ce qui m'intéresse, l'idée c'est de faire un programme utilisable par des nOOb total (=> clic clic)

Votre fonction ne fonctionne pas avec le cliclic

J'en reste donc avec mes deux fichiers .R qui marchent très bien.

Quel différence entre <- et = ?

Il me semble que dans Rparadis elle explique que c'est la même chose...
Le lire c'est bien, mais le R c'est mieux.

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 07 Aoû 2008, 12:51

Jérôme Avond a écrit :Oui bon ct un exemple


... non testé et qui ne marchait pas, même dans Rgui, et qui fait donc perdre du temps à ceux qui essaient de vous aider.

Bon nul doute que cette fonction "fonctionne" (arf! :P ) dans le gui, ce n'est pas ce qui m'intéresse, l'idée c'est de faire un programme utilisable par des nOOb total (=> clic clic)

Votre fonction ne fonctionne pas avec le cliclic


Alors il va falloir programmer une interface, via tcl/tk par exemple.

Quel différence entre <- et = ?

Il me semble que dans Rparadis elle explique que c'est la même chose...


Pour un utilisateur soigneux et averti, pas de pb. Sinon, risques de confusion entre "=" et "==" (comme dans votre code) et risques d'erreur dans l'écriture des fonctions.

Renaud


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité