R-də bir düyməni basmaq üçün necə gözləmək olar?

Istifadəçi açar düyməsini basana qədər R skriptimi dayandırmaq istəyirəm.

Bunu necə edirsiniz?

103
07 марта '13 в 16:50 2013-03-07 16:50 Contango , 07.03.2013 tarixində saat 16.50- də təyin olunub
@ 4 cavab

readline() şərhlərində yazdığı kimi, readline() üçün pişik istifadə etmək lazım deyil. Yalnız yaz:

 readline(prompt="Press [enter] to continue") 

Bir değişkene atamak istemiyorsanız ve bir mesajın konsoluna readline() , readline() in readline() ' readline() :

 invisible(readline(prompt="Press [enter] to continue")) 
76
11 сент. Cavab 11 sentyabr tarixində verilmişdir 2013-09-11 19:27 '13 at 7:27 pm 2013-09-11 19:27

Metod 1

Konsolda [enter] düyməsinə basana qədər gözləyin:

 cat ("Press [enter] to continue") line <- readline() 

Funksiyaya daxil olmaq:

 readkey <- function() { cat ("Press [enter] to continue") line <- readline() } 

Bu funksiya C # Console.ReadKey() ən yaxşı ekvivalentidir.

Metod 2

Klaviaturada [Enter] düyməsinə basana qədər durdurun. Bu metodun dezavantajı, əgər bir ədəd olmayan bir şey yazarsanız, səhv göstərilir.

 print ("Press [enter] to continue") number <- scan(n=1) 
border=0

Funksiyaya daxil olmaq:

 readkey <- function() { cat("[press [enter] to continue]") number <- scan(n=1) } 

Metod 3

Şəkildə başqa bir nöqtə tikilməzdən əvvəl bir düyməni basmaq üçün gözləmək istədiyiniz bir düşünün. Bu vəziyyətdə, getGraphicsEvent () istifadə edə bilərik ki, bir düyməni grafiğin içində basıb saxlayın.

Bu nümunə proqramı konsepsiyanı göstərir:

 readkeygraph <- function(prompt) { getGraphicsEvent(prompt = prompt, onMouseDown = NULL, onMouseMove = NULL, onMouseUp = NULL, onKeybd = onKeybd, consolePrompt = "[click on graph then follow top prompt to continue]") Sys.sleep(0.01) return(keyPressed) } onKeybd <- function(key) { keyPressed <<- key } xaxis=c(1:10) # Set up the x-axis. yaxis=runif(10,min=0,max=1) # Set up the y-axis. plot(xaxis,yaxis) for (i in xaxis) { # On each keypress, color the points on the graph in red, one by one. points(i,yaxis[i],col="red", pch=19) keyPressed = readkeygraph("[press any key to continue]") } 

Burada nöqtələrin yarısı rəngli, sonrakı tuş vuruşunu gözləyən grafiği görə bilərsiniz.

Uyğunluq. Ətraf mühitdə sınaqdan keçirildikdə ya win.graph və ya X11 istifadə edin. Revolution R v6.1 ilə Windows 7 x64 ilə işləyir. RStudio-da işləmir (win.graph istifadə etmir).

2019

72
07 марта '13 в 16:50 2013-03-07 16:50 Cavab 7 Mart 'da saat 16.00' da Contango'da verildi 2013-03-07 16:50

Kiçik bir pəncərəni açıb kiçik bir funksiyanı (tcltk paketindən istifadə edərək) davam etdirə və ya düyməni basana qədər gözləyin (kiçik pəncərə hələ diqqət mərkəzindədir).

 library(tcltk) mywait <- function() { tt <- tktoplevel() tkpack( tkbutton(tt, text='Continue', command=function()tkdestroy(tt)), side='bottom') tkbind(tt,'<Key>', function()tkdestroy(tt) ) tkwait.window(tt) } 

Ssenariyədə fasilə etmək istədiyin hər hansı bir yerdə mywait() .

Tcltk (mənim ümumi düşünürəm) dəstəkləyən hər hansı bir platformada işləyir, hər hansı bir klaviatura (yalnız daxil deyil) reaksiya verəcək və hətta komanda toplu rejimdə işləyərkən işləyir (amma yığın rejimində durur). rejimi davam etdirmək istəmirsinizsə, həmişə gözləyin). Bir basılan və ya basılamadıysanız, müəyyən bir müddət sonra davam etməsi üçün bir taymer əlavə edə bilərsiniz.

Hansı düyməni basıb qaytarır (lakin bunun üçün dəyişdirilə bilər).

17
08 марта '13 в 1:32 2013-03-08 01:32 Cavab Greg Snow tərəfindən 8 Mart '13 'də 1:32' də veriləcək 2013-03-08 01:32

R və Rscript qeyri-interaktiv rejimdə oxumaq və tarama üçün göndərilir (bax: ? readline ). Çözüm, stdin taramayı istifadə etmək məcburiyyətindədir.

 cat('Solution to everything? > ') b <- scan("stdin", character(), n=1) 

Məsələn:

 $ Rscript tR Solution to everything? > 42 Read 1 item 
11
08 апр. Simon A. Eugster tərəfindən verilmiş cavab 08 Apr. 2014-04-08 12:33 '14 at 12:33 2014-04-08 12:33

haqqında digər suallar və ya bir sual soruşun