以下是从网上收集的从perl中调用R的方法:

1 直接用system()命令

比如有个test.R程序,可以通过下面的方式调用:

system("R

2 安装模块RSperl

该模块的具体介绍http://www.omegahat.org/RSPerl/

安装过程如下:

tar zxf RSPerl_0.9-0.tar.gz

R CMD INSTALL --configure-args='--with-in-perl' RSPerl

cd RSPerl/src

make -f Makefile.perl install

设置环境变量:

$R_LIBS:设置需要的R的包的位置,默认是$R_HOME/library/。

$PERL5LIB:设置需要的perl包(R.pm,RReferences.pm,R.so)的位置。

RSPerl/scripts /目录里提供了两个设置环境变量的shell命令文件,可以直接使用:source RSPerl/scripts/RSPerl.csh

3 使用perl中的module Statistics::R

(转自http://cos.name/bbs/simple/index.php?t16122.html)

用Statistics::R ,既可适用于Win32平台,也可在Linux 中使用。

不过Win32平台安装模块要在cmd命令行中使用cpan进行安装,而ActivePerl的PPM找不到安装模块。

模块有一共有四个:Statistics::R

Statistics::R::Bridge

Statistics::R::Bridge::Win32

Statistics::R::Bridge::pipe

不过好像先安装第二个,再安装第一个,后边2个好像会自动安装(我装的时候没注意,反正用cpan再装多一次也无防)

以下是一个在Win32平台的示例:输出一个矩阵及打印输出矩阵的行例数:

--------------------------------------------------------

#!usr/bin/perl-w

use Statistics::R;

my $R = Statistics::R->new() ;

$R->startR ;

$R->send(qq`A=rbind(c(76.0, 91.5, 85.5, 82.5, 79.0, 80.5, 74.5,79.0, 85.0, 76.5, 82.0, 95.0, 92.5), \n

c(50, 20, 20, 30, 30, 50, 60, 50, 40, 55,40, 40, 20), \n

c(120, 141, 124, 126, 117, 125, 123, 125,132, 123, 132, 155, 147)) \n`) ;

$R->send(qq`ncol=ncol(A);nrow=nrow(A) \n print(paste("矩阵A是",nrow,"行",ncol,"例矩阵",sep="")) `);

my $ret = $R->read;

print $ret,"\n";

$R->send(qq`print(A)`);

my $ret = $R->read;

print $ret;

$R->stopR();

#注:$R->read只能读取到R最后一次的输出信息,所以R每输出一次信息就需调用一次$R->read,然后将其结果用print在perl中打印输出

-------------------------------------------------------

输出结果为:

[1] "矩阵A是3行13例矩阵"

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]

[1,] 76 91.5 85.5 82.5 79 80.5 74.5 79 85 76.5 82 95 92.5

[2,] 50 20.0 20.0 30.0 30 50.0 60.0 50 40 55.0 40 40 20.0

[3,] 120 141.0 124.0 126.0 117 125.0 123.0 125 132 123.0 132 155 147.0

-------------------------------------------------------

一般人希望用perl调用R的目的 应该不只是希望得到R的处理结果,而是希望perl能利用R内部的大量科学计算函数:

假如要将变量从perl传入R中进行计算(如将$a=1传进R),或要将调用R函数计算出的结果值传入perl再进行后续处理(如

将向量c(1,2,3,4,6)的均值加上$a的结果传入perl后利用perl再进行加2处理),可以如下写脚本:

#!usr/bin/perl-w

use Statistics::R;

my $a=1;

my $R = Statistics::R->new();

$R->startR;

$R->send(qq`x=c(1,2,3,4,6) \n y=mean(x) \n z=$a+y \n print(z)`) ;

my $ret = $R->read;

print $ret,"\n"; #输出R的处理结果

$R->stopR();

$ret=~s/\[\d\]\s+(\d+)/$1/g;

my $b=$ret+2;

print $b;#输出最终结果

个人感觉还是用system()函数比较方便,其他两种都有点麻烦。

php 调用 perl,perl中如何调用R语言相关推荐

  1. linux中cv调用摄像头,ubuntu中opencv调用摄像头

    ubuntu中opencv调用摄像头 ubuntu中opencv调用摄像头 文章目录 一.Ubuntu中安装opencv 二.关于Linux如何开启摄像头 1.安装VMvareTools,这个是真的强 ...

  2. php中调用脚本,PHP中如何调用RScript脚本(附代码)

    这篇文章主要介绍了PHP中如何调用RScript脚本,有一定的参考价值,感兴趣的朋友可以参考一下,希望对你有所帮助! 由于某个原因,需要在PHP中调用R语音进行绘制图像.经过多方百度,目前大部分解决方 ...

  3. python怎么调用方法_python中怎么调用自己的方法

    展开全部 C/C++对Python的调用2113层次可5261以分为三个层次, (1) 高层次的调用, (2)纯Python调用, (3) Python方法的4102扩展(也就使向Python输出调用 ...

  4. java中调用js_java编程中实现调用js方法分析

    本文实例讲述了java编程中实现调用js方法.分享给大家供大家参考,具体如下: /* * 加载脚本引擎,并在java中调用js方法 */ public void test2() { ScriptEng ...

  5. C代码中如何调用C++ C++中如何调用C

    注意这里的C调用C++或者C++调用C意思是.c文件中调用.cpp文件中代码,或者相反. 集成开发环境如VC++6.0或者vs都是以文件后缀来区别当前要编译的是C代码还是C++代码,然后采用响应的编译 ...

  6. python中如何调用类_python中如何调用类的方法

    类的方法的调用: 与普通的函数调用类似 1.类的内部调用:self.<方法名>(参数列表). 2.在类的外部调用:<实例名>.<方法名>(参数列表). 注意:以上两 ...

  7. oracle中调用过程,oracle中如何调用存储过程

    oracle中如何调用存储过程 发布时间:2020-03-08 03:28:03 来源:51CTO 阅读:511 作者:lxg290 一.通过pls块来调用存储过程: declare p_dzno v ...

  8. matlab vb调用,VB程序中实现调用MATLAB的方法

    收稿日期:2000207227 作者简介:王跃强(1978-),男,硕士研究生,主要研究方向:光电检测及其自动化. 文章编号:1001-9081(2001)02-0095-02 VB 程序中实现调用M ...

  9. python安装库后无法调用摄像头_Python中怎么调用摄像头

    Python中怎么调用摄像头 Python中调用摄像头可以使用opencv库来实现. OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Andro ...

  10. python调用电脑摄像头_Python中怎么调用摄像头

    Python中怎么调用摄像头 Python中调用摄像头可以使用opencv库来实现. OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Andro ...

最新文章

  1. java程序设计 徐红_Java程序设计-徐红 王灿
  2. 计算机辅助的开发方法,基于计算机辅助设计技术(TCAD)的工艺开发
  3. 配置云服务器 FTP 服务
  4. 使用Maven原型高效创建Eclipse模块
  5. xml文件中删除根节点
  6. 面试python说会为什么_Python面试必须要看的15个问题
  7. linux 文件安装大全,linux 文件包安装大全
  8. 在centos7上使用yum安装jdk1.8
  9. 美团点评 2019校招 前端方向职位试卷在线考试
  10. 阿里云 OSS浏览器使用步骤
  11. STM8在STVD下开发所需的中断向量表模版
  12. Pycharm中运行yolov5-pytorch出现错误:AttributeError: ‘Hardswish‘ object has no attribute ‘inplace‘
  13. 正则表达式驼峰转中(下)划线
  14. C++学习笔记-第4单元-对象和类(基础)
  15. ABP框架源码中的Linq扩展方法
  16. 《HyVulDect: A hybrid semantic vulnerability mining system based ongraph neural network》阅读笔记
  17. Codeforces 768B Code For 1 二分+区间查询
  18. 基于pyqt5开发的图书管理系统UI(带登录页面)
  19. 计算机计算器logo,计算器品牌哪个比较好(卡西欧stylish计算器入手体验)
  20. epic服务器状态,对 Epic Games 启动程序问题进行故障排除

热门文章

  1. php框架 zend,模型部分的php设计模式[php zend框架]
  2. dockerclient 查看端口占用_docker 端口被占用问题解决
  3. 按值传递时 php必须复制值,PHP笔试题汇总
  4. 牛客练习赛46 C 华华跟奕奕玩游戏 (期望,概率)(详解)
  5. Ubuntu服务器运行js,让js一直运行下去
  6. STM32 解析futaba S-bus协议
  7. FZU 1914 Funny Positive Sequence
  8. Sqlserver别太信任SysComments表中的text字段
  9. Symbian编程总结-图形图像篇-直接屏幕访问
  10. VC程序调试技术,一些工具上和具体的问题,包括内存检测