2010-07-26 10 views
9

¿Hay una manera fácil de activar todos los elementos GUI en R y ejecutarlo únicamente desde la línea de comandos en OSX?Deshabilitar GUI, dispositivos gráficos en R

Estoy tratando de replicar el comportamiento de un terminal de Linux remoto en mi máquina OSX. Así, plot() debería simplemente guardar un archivo y cosas como CRAN mirror selection deberían ser texto, no una interfaz Tk. Tengo problemas para encontrar dónde establecer este comportamiento.

Respuesta

1

No soy dueño de una caja de OS X, pero ¿trató de desarmar el X11 variable de entorno DISPLAY:

DISPLAY = "" R --vanilla

Cuando hago eso en Linux y consulta R para capabilties(), x11 aparece como FALSE según lo deseado.

+0

Eso hace x11 efectivamente desactivar, pero deja Acqua y tcltk cierto. plot() todavía abre una ventana de cuarzo. – Tristan

+3

options (device = pdf) –

3

Para los gráficos, puede dirigir la salida a un archivo utilizando el comando pdf() (o png(), jpeg() ...).

0

No ejecuto OSX pero podría intentar ejecutar R desde la aplicación Terminal, en lugar de ejecutar Mac OSX, y ver si eso funciona como lo necesita.

Al escribir Matti, puede enviar los resultados a los archivos con los siguientes comandos; pero no sé si esa es realmente la esencia de tu pregunta.

png("pngfile.png") 
plot(foo) 
title(main="bar") 
dev.off() 

Así que en lugar del objeto gráfico de cuarzo, su salida va al archivo.

De forma similar, puede generar lo que normalmente aparecería en el terminal de un archivo.

sink("foo.file") 
+0

Incluso la línea de comando R abre una ventana de cuarzo por defecto si existe la capacidad. La única forma que he encontrado para desactivarlo es compilar R sin soporte de agua, pero eso es menos que ideal. – Tristan

+1

Usar el comando 'png() 'es realmente un mal ejemplo, porque png en realidad requiere una conexión X11 para hacer la representación. Reemplácela por algo como 'pdf() ' – parasietje

+0

La última R se puede compilar para tener soporte png() sin requerir X11 (mediante lienzo). En caso de que alguien lea este comentario. – dieresys

4

Tenía esta pregunta exacta y quería una manera de hacerlo sin cambiar mi código existente. Normalmente corro con soporte de gráficos, pero a veces ejecuto un script en el servidor para un conjunto de datos más grande y luego solo quiero que los gráficos se envíen a algún lugar de forma automática.

En la respuesta de Dirk, Ian Fellows ofrece la solución más simple. En la línea de comandos de tipo R:

options(device=pdf) 

Y entonces ningún parcelas serán escritos a la corriente directamente a un archivo Rplots.pdf.

Si desea que los archivos no se pueden trazar en todo, entonces utilizar

options(device=NULL) 
Cuestiones relacionadas