Error en R: no se puede abrir la conexión a X11

9

Acabo de configurar una distribución de fedora en mi computadora y lentamente estoy tratando de aprender a trabajar desde la línea de comandos. Estaba probando lo Rque salió bien, excepto por alguna razón cuando lo intenté de nuevo, de repente parece que no puedo dibujar tramas. Me sale el error:

> x = 1:5
> y = x^2
> plot(x,y)
No protocol specified
Error in X11(d$display, d$width, d$height, d$pointsize, d$gamma, d$colortype,  : 
  unable to start device X11cairo
In addition: Warning message:
In function (display = "", width, height, pointsize, gamma, bg,  :
  unable to open connection to X11 display ''

y cuando verifico las capacidades veo que X11es FALSE:

> capabilities()
No protocol specified
    jpeg      png     tiff    tcltk      X11     aqua http/ftp  sockets 
    TRUE     TRUE     TRUE     TRUE    FALSE    FALSE     TRUE     TRUE 
  libxml     fifo   cledit    iconv      NLS  profmem    cairo 
    TRUE     TRUE     TRUE     TRUE     TRUE    FALSE     TRUE 

Aunque no sé nada sobre si están conectados o no, parece que X11 debería estar encendido.

En todas partes donde busqué a esta gente parecía tener este problema cuando trabajaba a través de una conexión ssh (aún no he echado un vistazo a lo que es exactamente: $).

Espero que alguien que sepa de qué se trata este problema pueda ser tan amable de explicarme el problema y sugerir una solución.

Jóhann
fuente
1
Antes de comenzar R, ¿puede publicar la salida deecho $DISPLAY
Karlson
Este comando produce ´: 0´
Jóhann
1
¿Qué tal de R:Sys.getenv("DISPLAY")
Karlson
hmm, esto solo me da bash: syntax error near unexpected token "DISPLAY" ''
Jóhann
Haga esto: Sys.getenv(DISPLAY)o esto: Sys.getenv('DISPLAY')oSys.getenv(c("DISPLAY"))
Karlson

Respuestas:

6

Hay muchos hilos relacionados con el paquete de El Cairo.

Uno de ellos menciona el cambio en el tipo X11, pero la mayoría de ellos afirma que R no sabe qué es la pantalla y sugiere hacer:

Sys.setenv("DISPLAY"=":0.0")

o, en sistemas más antiguos,

Sys.putenv("DISPLAY"=":0.0")
Karlson
fuente
55
Lamentablemente, ni esta solución ni la mencionada en el otro hilo parecen solucionarlo. : / Mi paquete también insiste en que use Sys.setenv en lugar de putenv ... ¿no sabe si el nuevo comando es diferente?
Jóhann
3
Sys.putenvestá en desuso a favor deSys.setenv
Karlson
1
Esto funcionó la próxima vez que intenté usar esto :). Debe haber sido algo extraño con la última sesión
Jóhann
1

Si no tiene ningún servidor X local, puede instalar el servidor virtual framebuffer X11 como se dice aquí :

apt-get install xvfb xauth xfonts-base

Entonces puede comenzar una nueva instancia como se dice aquí :

Xvfb :0 -ac -screen 0 1960x2000x24 &

Luego, si su R se compila con la with-xopción de configuración (habilitada de forma predeterminada), debe tener la capacidad X11, y solo tiene que declarar esto en R:

Sys.setenv("DISPLAY"=":0")
Anthony O.
fuente