簡體   English   中英

perl @array數據到R中

[英]perl @array data into R

一個非常簡單的疑問,但我不知道如何管理這個。

我想為'datos.txt'中的所有數據繪制直方圖。

a)使用R:

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

b)如何在Perl中調用R來做同樣的事情?

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

謝謝!!

Perl不是像R這樣的以統計為中心的語言,因此在核心中不太可能找到圖表功能。 但是Perl是一種通用語言,它可以做任何事情,你可以通過搜索CPAN找到你想要的東西。 快速瀏覽產生一些有希望的候選人:

您也可以嘗試使用perl模塊

統計:: R.

這似乎支持Windows和Linux。 我還沒有真正使用它。 因此,我不知道它是否易於安裝(或者如果安裝程序引入了大量依賴項,或者需要多少手動配置)。

它似乎是基於管道的,基於win32的系統的OS檢查非常簡單,所以我認為它在Linux上比在windows上更好。

但該模塊似乎正在積極開發(截至2012年)。 對於你的用例,從perl向R發送一些簡單的命令,值得一看。

有一次,我覺得我想要一個非常簡單的命令行條形圖(很容易適應直方圖或散點圖等)制作者,我可以堅持在管道的末端。 我不知道當時有很多的R,也沒有我知道的利特勒 (它可能根本不會存在尚未),所以我想了做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)){}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM