perl @array данные в R - PullRequest
       2

perl @array данные в R

3 голосов
/ 02 апреля 2012

очень простое сомнение, но я не знаю, как с этим справиться.

Я хочу построить гистограмму для всех данных в «datos.txt».

а) с помощью R:

datos<-scan("datos.txt")
pdf("xh.pdf")
hist(datos)
dev.off()

б) Как я могу вызвать R внутри Perl, чтобы сделать то же самое?

#!/usr/bin/perl
open(DAT,"datos.txt");
while (<DAT>) {
 chomp;
 push(@datos,$_);
}
#now I want a histogram of values in @datos

Спасибо !!

Ответы [ 3 ]

3 голосов
/ 02 апреля 2012

Perl не является языком, ориентированным на статистику, как R, поэтому функции построения диаграмм вряд ли можно найти в ядре. Но поскольку Perl является языком общего назначения, он может делать все, что может R, и вы часто найдете то, что хотите, выполнив поиск CPAN . Быстрый взгляд дает несколько многообещающих кандидатов:

2 голосов
/ 02 апреля 2012

Вы также можете попробовать модуль perl

Статистика :: R .

Похоже, это поддерживается для Windows и Linux.Я действительно не использовал это все же.Таким образом, я не знаю, легко ли это установить (или установщик получает множество зависимостей, или сколько требуется ручной настройки).

Кажется, что он основан на конвейере, и проверка ОС для систем на основе win32 действительно проста, поэтому я думаю, что он работает лучше в Linux, чем в Windows.

НоМодуль, похоже, активно развивается (по состоянию на 2012 год).И для вашего случая использования, посылая несколько простых команд из perl в R, стоит посмотреть.

0 голосов
/ 02 апреля 2012

В какой-то момент я решил, что мне нужен действительно простой инструмент для построения графиков командной строки (легко адаптируемый к гистограмме, точечной диаграмме и т. Д.), Который я мог бы прикрепить в конце конвейера.В то время я не знал много R и не знал о littler (возможно, его еще даже не существовало), поэтому я решил заняться хакерским встраиванием R в perl.Это работает, хотя.Я бы не стал писать так снова, потому что теперь я знаю намного больше R, но это было полезно для меня как есть.Единственная серьезная проблема заключается в том, что, поскольку цикл событий отсутствует, программу необходимо поддерживать искусственно, чтобы окно не исчезало.Вам понадобится пакет RSPerl и сценарии, как описано здесь http://www.omegahat.org/RSPerl/


#!/usr/bin/perl -w
use strict;
use R;
use RReferences;

&R::startR("--no-save", "--silent");

my $header = <>;
chomp $header;
my @header = split(/,/, $header);
my @x;
my @y;

while(<>){
    chomp;
    my @fields = split(/,/);
    push(@x, $fields[0]);
    push(@y, $fields[1]+0);
}

R::callWithNames("barplot", {"height",\@y, "data",\@x, "xlab",$header[0], "ylab",$header[1] });

print "Ctrl-C to exit\n";
while(sleep(60)){}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...