fonction "pause" dans 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

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

fonction "pause" dans R

Messagepar Stéphane Laurent » 05 Mar 2007, 15:06

Bonjour,

Comment inclure une pause dans l'éxecution d'un script R ? L'éxecution se met en pause et repart quand l'utilisateur lui demande. J'ai cherché un peu je n'ai rien trouvé.

Merci.

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 05 Mar 2007, 15:15

Bonjour,


Je ne connais pas de "pause" a proprement parlé mais je peux te donner une petite astuce, tu mets la fonction scan() à l'endroit où tu veux faire une pause et du coup il te demandera dans la console une valeur et tu n'as plus qu'à appuyer sur entrée et ça repart.

Maxime

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Messagepar Stéphane Laurent » 05 Mar 2007, 15:33

Bonjour,

Comment utiliser scan() ?

Par exemple si je fais ça :

Code : Tout sélectionner

plot(forbes.sim)
scan()
print(forbes.sim)


J'exécute ça fait ça :

Code : Tout sélectionner

> plot(forbes.sim)
> scan()
1: print(forbes.sim)
1:
Erreur dans scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  :
        scan() attendait 'a real' et a reçu 'print(forbes.sim)'

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 05 Mar 2007, 16:01

Re,

Si tu mets une pause dans une fonction ou dans une boucle cela fonctionne :

Code : Tout sélectionner

x <- rnorm(100)
y <- rnorm(100)
ted <- function(){
plot(x,y)
scan()
print(x)
}
ted()


Essaie ça et tu verras qu'il te demandera de lui rentrer une valeur à ce moment la tu tapes entrée et le print s'effectue.

Maxime

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Messagepar Stéphane Laurent » 05 Mar 2007, 16:24

Ok je vois. Mais c'est pas très esthétique et on est obligé d'arrêter la sélection juste après le dernier caractère de ted().

Une fonction pause doit bien exister non ?

Olivier Delaigue
Messages : 220
Enregistré le : 05 Déc 2006, 07:38

Messagepar Olivier Delaigue » 05 Mar 2007, 16:39

On peut aussi faire un truc du style :

Code : Tout sélectionner

x <- rnorm(100)
y <- rnorm(100)
ted <- function(){
plot(x,y)
cat("Appuyez sur \"Entrée\" pour continuer. ")
pause <- readLines(n=1)
print(x)
}
ted()


ou encore utiliser la fonction Sys.sleep, mais là on choisit un temps en secondes au préalable.

Code : Tout sélectionner

x <- rnorm(100)
y <- rnorm(100)
ted <- function(z){
plot(x,y)
Sys.sleep(z)
print(x)
}
ted(3)

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 05 Mar 2007, 16:39

Stéphane Laurent a écrit :Ok je vois. Mais c'est pas très esthétique et on est obligé d'arrêter la sélection juste après le dernier caractère de ted().

Je ne comprends pas ce que tu entends par la. Quelle utilisation comptes-tu faire d'une pause ?

Maxime

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Messagepar Stéphane Laurent » 05 Mar 2007, 16:47

Ce qui ne va pas (j'ai aussi essayé readlines et menu), c'est que moi je sélectionne deux lignes :

Code : Tout sélectionner

print(machin)
plot(machin)


et je fais "éxecuter la sélection". Si je sélectionne "ted()" et que je m'arrête exactement là ça va, si je sélectionne "ted()" et un seul caractère suivant (même un blanc), R fait comme si c'était moi qui avait tapé ce caractère.

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 05 Mar 2007, 17:07

Re,

C'est ce que j'avais indiqué au départ ça marche si c'est inclus dans une fonction ou une boucle mais si tu l'executes directement dans R ça ne marche pas. Dans ce cas je n'ai pas de solution.

Maxime

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Messagepar Stéphane Laurent » 05 Mar 2007, 19:12

En fait comment on fait pour ne pas éxectuer directement dans R ?

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

Messagepar Renaud Lancelot » 05 Mar 2007, 21:11

On écrit un script rassemblant des commandes dans un fichier texte que l'on exécute ensuite avec la fonction source(), ou on écrit des fonctions.

R (version Windows) possède un petit éditeur de texte intégré qui permet d'exécuter tout ou partie d'un script: faire "Fichier" --> "Nouveau script" et exprimenter. Il y a aussi de nombreux éditeur plus évolués permettant de faire la même chose mais avec coloration syntaxique et de nombreux outils d'aide. L'un des plus simples est Tinn-R.

Il serait utile et nécessaire de lire le document "An introduction to R" livré avec R, ou les nombreux autres documents d'introduction qui existent, y compris en français.

Renaud

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Messagepar Stéphane Laurent » 05 Mar 2007, 21:50

Il serait utile et nécessaire de lire le document "An introduction to R" livré avec R, ou les nombreux autres documents d'introduction qui existent, y compris en français.


Dès fois j'ai un peu peur d'avoir l'air d'un "boulet" sur ce forum, quand je pose des questions de base sur R. Désolé c'est parce que j'apprends plein de choses en même temps en ce moment, j'ai projeté de lire des docs de base sur R mais là je peux pas.


R (version Windows) possède un petit éditeur de texte intégré qui permet d'exécuter tout ou partie d'un script: faire "Fichier" --> "Nouveau script" et exprimenter.


Je sais je n'utilise que ça. Je tape mes commandes dans le script, je les sélectionne par morceau et j'exécute.

Je vais essayer la fonction source()

Merci à vous.

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Messagepar Stéphane Laurent » 05 Mar 2007, 22:10

Génial. Voici ma fonction pause :


blah <- function(){readline("Press <ENTER> to Continue.")}

plot(machin)
blah()
plot(truc)
blah()
...

Merci infiniment à vous.

Juliette Fabre
Messages : 32
Enregistré le : 09 Mar 2007, 12:24

Messagepar Juliette Fabre » 09 Mar 2007, 15:36

Bonjour,

La fonction pause existe déjà dans la librairie "sm" :
Il suffit d'insérer pause() et l'exécution se stoppe avec un message stipulant à l'utilisateur de taper Entrée pour reprendre l'éxécution!


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité