php 调用 perl,perl中如何调用R语言
以下是从网上收集的从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语言相关推荐
- linux中cv调用摄像头,ubuntu中opencv调用摄像头
ubuntu中opencv调用摄像头 ubuntu中opencv调用摄像头 文章目录 一.Ubuntu中安装opencv 二.关于Linux如何开启摄像头 1.安装VMvareTools,这个是真的强 ...
- php中调用脚本,PHP中如何调用RScript脚本(附代码)
这篇文章主要介绍了PHP中如何调用RScript脚本,有一定的参考价值,感兴趣的朋友可以参考一下,希望对你有所帮助! 由于某个原因,需要在PHP中调用R语音进行绘制图像.经过多方百度,目前大部分解决方 ...
- python怎么调用方法_python中怎么调用自己的方法
展开全部 C/C++对Python的调用2113层次可5261以分为三个层次, (1) 高层次的调用, (2)纯Python调用, (3) Python方法的4102扩展(也就使向Python输出调用 ...
- java中调用js_java编程中实现调用js方法分析
本文实例讲述了java编程中实现调用js方法.分享给大家供大家参考,具体如下: /* * 加载脚本引擎,并在java中调用js方法 */ public void test2() { ScriptEng ...
- C代码中如何调用C++ C++中如何调用C
注意这里的C调用C++或者C++调用C意思是.c文件中调用.cpp文件中代码,或者相反. 集成开发环境如VC++6.0或者vs都是以文件后缀来区别当前要编译的是C代码还是C++代码,然后采用响应的编译 ...
- python中如何调用类_python中如何调用类的方法
类的方法的调用: 与普通的函数调用类似 1.类的内部调用:self.<方法名>(参数列表). 2.在类的外部调用:<实例名>.<方法名>(参数列表). 注意:以上两 ...
- oracle中调用过程,oracle中如何调用存储过程
oracle中如何调用存储过程 发布时间:2020-03-08 03:28:03 来源:51CTO 阅读:511 作者:lxg290 一.通过pls块来调用存储过程: declare p_dzno v ...
- matlab vb调用,VB程序中实现调用MATLAB的方法
收稿日期:2000207227 作者简介:王跃强(1978-),男,硕士研究生,主要研究方向:光电检测及其自动化. 文章编号:1001-9081(2001)02-0095-02 VB 程序中实现调用M ...
- python安装库后无法调用摄像头_Python中怎么调用摄像头
Python中怎么调用摄像头 Python中调用摄像头可以使用opencv库来实现. OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Andro ...
- python调用电脑摄像头_Python中怎么调用摄像头
Python中怎么调用摄像头 Python中调用摄像头可以使用opencv库来实现. OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Andro ...
最新文章
- java程序设计 徐红_Java程序设计-徐红 王灿
- 计算机辅助的开发方法,基于计算机辅助设计技术(TCAD)的工艺开发
- 配置云服务器 FTP 服务
- 使用Maven原型高效创建Eclipse模块
- xml文件中删除根节点
- 面试python说会为什么_Python面试必须要看的15个问题
- linux 文件安装大全,linux 文件包安装大全
- 在centos7上使用yum安装jdk1.8
- 美团点评 2019校招 前端方向职位试卷在线考试
- 阿里云 OSS浏览器使用步骤
- STM8在STVD下开发所需的中断向量表模版
- Pycharm中运行yolov5-pytorch出现错误:AttributeError: ‘Hardswish‘ object has no attribute ‘inplace‘
- 正则表达式驼峰转中(下)划线
- C++学习笔记-第4单元-对象和类(基础)
- ABP框架源码中的Linq扩展方法
- 《HyVulDect: A hybrid semantic vulnerability mining system based ongraph neural network》阅读笔记
- Codeforces 768B Code For 1 二分+区间查询
- 基于pyqt5开发的图书管理系统UI(带登录页面)
- 计算机计算器logo,计算器品牌哪个比较好(卡西欧stylish计算器入手体验)
- epic服务器状态,对 Epic Games 启动程序问题进行故障排除
热门文章
- php框架 zend,模型部分的php设计模式[php zend框架]
- dockerclient 查看端口占用_docker 端口被占用问题解决
- 按值传递时 php必须复制值,PHP笔试题汇总
- 牛客练习赛46 C	华华跟奕奕玩游戏 (期望,概率)(详解)
- Ubuntu服务器运行js,让js一直运行下去
- STM32 解析futaba S-bus协议
- FZU 1914 Funny Positive Sequence
- Sqlserver别太信任SysComments表中的text字段
- Symbian编程总结-图形图像篇-直接屏幕访问
- VC程序调试技术,一些工具上和具体的问题,包括内存检测