2016-05-16 9 views
0

Ich habe eine Funktion, die eine Endlosschleife hat, und drinnen plotten image Objekt, und ich erstelle ein x11() Fenster und zeichne es dort, aber wenn ich das Fenster schließe, läuft die Funktion im Hintergrund weiter. Mein R-Code kann unten gesehen werden:Wie binden Sie die Plotfunktion an x11() in R?

plotInfinite <- function() 
{ 
    while(TRUE) 
    { 
    mat <- matrix(sample(0:1, 50*50, replace = TRUE), 50, 50) 
    image(mat) 
    Sys.sleep(0.1) 
    } 
} 

x11() 
plotInfinite() 

Ist es möglich, irgendwie zu x11() Fenstern meines Funktionsaufruf zu binden, so dass, wenn ich das Fenster zu schließen, auch der Funktionsaufruf beendet, das heißt bricht aus der Endlosschleife? Vielen Dank für die Antwort

Antwort

0

Sie können es in Funktion definieren wie

plotInfinite <- function() 
{ 
    dev=dev.cur() # get cur device name 
    tt=TRUE 
    while(tt==TRUE) 
    { 

    mat <- matrix(sample(0:1, 50*50, replace = TRUE), 50, 50) 
    image(mat) 
    Sys.sleep(0.1) 
    if(dev!=dev.cur()){ tt=FALSE} #check if device changed 
    } 
} 

dann

x11() 
plotInfinite() 

wird vor

+0

geschlossen arbeiten. –

Verwandte Themen