2012-01-04 21 views
5

Actualmente estoy usando ActiveState Perl 5.14 y el proyecto R versión 2.13.2. Dentro de Perl, estoy usando Statistics :: R version 0.08. Según ActiveState, las versiones más recientes de Statistics::R (hasta 0.24) no pasaron el escrutinio y, por lo tanto, no están disponibles a través del PPM.Perl Statistics :: R genera imagen de trazado en blanco (jpeg)

Historial: he estado utilizando Perl con éxito para acceder a R durante un tiempo para realizar análisis. Ahora quiero generar imágenes JPEG de los resultados del análisis para una fácil visualización.

Aquí está el problema: puedo generar las imágenes correctamente desde la consola R. Sin embargo, cuando ejecuto los mismos comandos a través de Perl, solo obtengo una imagen en blanco. Mi código consola incluye (simplificado, por supuesto):

x<-c(1,2,3,4,5) 
    y<-c(5,4,3,2,1) 
    jpeg("C:/temp.jpg") 
    plot(x,y) 
    dev.off() 

Y mis comandos Perl incluyen (también simplificado):

$R = Statistics::R->new(); 
    $R->start_sharedR 
    $R->send("x<-c(1,2,3,4,5)"); 
    $R->send("y<-c(5,4,3,2,1)"); 
    $R->send('jpeg("C:/temp.jpg")'); 
    $R->send("plot(x,y)"); 
    $R->send("dev.off()"); 

¿Alguna sugerencia? Sé que hay otras opciones de trazado disponibles para Perl. He eliminado algunos (GD Graph) porque los datos del eje X no se tratan como numéricos. Preferiría mantenerlo en R si es posible ya que ya estoy interactuando en ese paquete para el análisis. ¡Gracias!

+0

Intenta usar el paquete 'Cairo' (p. 'CairoJPEG()'), las funciones integradas como 'jpeg' pueden depender del back-end desde el que lo ejecute, por lo que algunas capacidades pueden estar disponibles desde la GUI de R pero no cuando están incrustadas (no revisé esta instancia, pero Cairo funciona independientemente del back-end). –

+0

Ejecuté el código Perl que me proporcionó (habilitando tanto 'strict' como' warnings') y funcionó bien. Sé por experiencia anterior que 'Statistics :: R' solía tener problemas para escribir gráficos en las imágenes (o al menos lo hizo en mi sistema). Asegúrese de que su versión de 'Statistics :: R' esté actualizada. –

+0

Con ActiveState creo que estoy limitado a 0.08. – Ryan

Respuesta

4

Olvídese de las estadísticas :: R. Solo usa una llamada al sistema. ¡Al menos es lo que hago!

my $path_to_r = "C:/Program Files/R/bin/Rscript.exe"; 

my $cmd = "x<-c(1,2,3,4,5);"; 
$cmd .= "y<-c(5,4,3,2,1);"; 
$cmd .= 'jpeg("C:/temp.jpg");'; 
$cmd .= "plot(x,y);"; 
$cmd .= "dev.off()"; 

system($path_to_r . " -e '" . $cmd . "'"); 

Si la secuencia de comandos R crece un poco o si se necesita el aporte de los parámetros, escribirlo en un archivo y Rscript.exe este archivo.

+0

De acuerdo. Esto es lo que terminé haciendo de todos modos. No pude hacer que Strawberry PERL funcionara; había demasiadas dependencias rotas. – Ryan

0

Funciona bien para mí con Statistics R :: 0.27, pero no con 0.08, la única versión que pude encontrar en el administrador de paquetes de Active perl. Para instalar 0.27, tuve que usar la línea de comando cpan. Hacer la prueba falla pero hacer la instalación estuvo bien. Un poco de un salvavidas.

(Por cierto yo soy un novato relativo. cpan Uso de línea de comandos era bastante fácil, sin embargo.
Tipo i /Statistics-R/ desde la línea de comandos cpan, a continuación, instalar FANGLY/Estadísticas-R-0.27.tar.gz (o lo que sea el archivo relevante es. Estoy usando un sistema de Windows, por lo que RSPerl no es una opción molesta para mí. Noto que la última versión de Statistics :: R tiene fecha de marzo de 2012, así que tal vez algunos de los problemas previamente documentados (¿tubería?) han sido resueltos. También es posible que necesite instalar un "creador", en mi caso era 'dmake', no 'nmake'. Bastante fácil, puede obtener una versión de make desde el sitio web M $ y copiar ese archivo + .err en PERL \ bin dir. Pero ayuda en esto está disponible en otra parte. ¡Espero que esto ayude!)