Статистика запуска:: R модуль на Perl в Mac OS — изображение не создается

#macos #perl #r

#macos #perl #r

Вопрос:

Я хотел бы вызвать R из скрипта Perl, но у меня возникли проблемы, которые, как я думаю, могут быть связаны с Mac, а не с Perl / R (у меня Snow Leopard, и R находится в path, поэтому нет проблем с тем, что Perl не находит R). Я установил модуль Statistics:: R, но я не думаю, что графика вызывается должным образом. Я попробовал очень простой скрипт (команды работают на R), но, похоже, он ничего не делает на Perl:-

 use strict;     
use warnings;     
use Statistics::R;    
my $R = Statistics::R->new();     
$R->run(q`plot(c(1, 5, 10), type = "l")`);     
$R->run(q`dev.off()`);
  

ОБРАТИТЕ внимание, что ‘ на самом деле являются обратными ссылками, но форум здесь не публикует их, поскольку считает, что это образец кода.

Это создает простой линейный график в R, но просто возвращает приглашение командной строки при запуске скрипта Perl. (Это адаптировано со страницы модуля CPAN http://metacpan.org/pod/Statistics::R )

Надеюсь, кто-нибудь сможет мне помочь.

Большое спасибо

Хелен

Комментарии:

1. Вы пропустили ввод $ R-> startR;

2. Только что обнаружил, что если я включу строку:- $ R-> выполнить (q png("out.png") ); это создаст файл, который я могу открыть.

3. Независимо от вашей проблемы, рассмотрите возможность обновления Statistics:: R с древнего 0.02! Я помню, как использовал это, и это было действительно довольно сломано!

Ответ №1:

Я нашел ваш вопрос интригующим, будучи коллегой MacR, и не был удивлен, что вы получили вывод с файлового графического устройства, png() но не от использования plot() без предварительного вызова dev.new() . Возможно, но ни в коем случае не обязательно, что вы могли бы заставить R открыть интерактивное окно на дисплее вашего монитора, если вы вошли в графическое устройство консоли Mac, quartz() . Из документации я не смог определить, открывался ли интерактивный сеанс R Perl. Что выдает этот код:

 use strict;     
use warnings;     
use Statistics::R;    
my $R = Statistics::R->new();
$R->run(q`quartz()`);
$R->run(q`plot(c(1, 5, 10), type = "l")`);     
$R->run(q`dev.off()`);
  

Я также думаю, что людям, написавшим этот код, было бы интересно услышать о вашем прогрессе. На связанных веб-страницах запрашивались отзывы, и если вы им их предоставите, это может быть полезно другим MACR в будущем.