2011-08-11 11 views
6

Tengo un script simple R. Cuando se ejecuta mediante Rscript.exe, de forma predeterminada está trazando un archivo PDF. Quiero que el guión abra una ventana de diagrama.Rscript está trazando a PDF

I utilizando el comando:

Rscript.exe tmp_plot.R 

archivo r tmp_plot.R contiene:

x <- 1:10 
y <- sin(x) 
plot(x,y) 

Respuesta

17

Está ejecutando R de una manera no interactiva - RSCRIPT es para guiones - de ahí el valor por defecto el dispositivo de trazado es pdf(), no x11() o cualquiera que sea su sistema operativo predeterminado (windows() por su aspecto). Sin embargo, es trivial abrir un dispositivo alternativo; use x11() o windows(). El problema que tiene al intentar escribir una secuencia de comandos que mostrará una trama en la pantalla es que, en el código de ejemplo que se muestra, la secuencia de comandos termina inmediatamente después de dibujar la trama, ya sea que se muestre en pantalla o en el dispositivo pdf(). En el mejor de usted puede conseguirlo para hacer una pausa utilizando Sys.sleep(), por ejemplo .:

x <- 1:10 
y <- sin(x) 
x11() ## or windows() 
plot(x,y) 
Sys.sleep(10) 

Creo que va de este por el camino equivocado. Si desea interactividad cuando ejecuta un "script" R, con lo cual me refiero a un conjunto de declaraciones R que realizan algún análisis, sería mejor que obtuviera un editor/IDE en su sistema operativo que le permita recorrer el script una línea. o un fragmento de código a la vez, además de interactuar con la sesión R en ejecución. Yo uso Emacs y la extensión ESS para esto. Puede considerar Tinn-R o RStudio como alternativas.

Rscript está destinado a ejecutar secuencias de comandos o tareas similares a trabajos por lotes que no requieren interacción o intervención humana.

+0

Gracias por la respuesta. Sí, estoy usando RStudio. Quería "implementar" mi script r en otra máquina como una aplicación independiente que utilizaba el archivo por lotes. ¿Hay algo similar al deploytool de Matlab? – r00kie

3
library(tcltk) # for message box and thus hold-open functionality 

x11() # for Linux, see documentation for other operating systems 

# first plot 
# second plot 

# hold-open functionality prevents script from exiting user acts 
prompt <- "hit spacebar to close plots" 
extra <- "some extra comment" 
capture <- tk_messageBox(message = prompt, detail = extra) 

Si no te gusta la idea de un contador de tiempo prescrito, el script anterior única salida al pulsar la tecla (la barra espaciadora o Intro) o haga clic con el ratón (el botón OK) del usuario.

+1

Los desarrolladores de Rscript pueden considerar una opción --persist, similar a la ofrecida por [gnuplot] (http://www.gnuplot.info). –