python3调用R语言干货
R语言知识:https://www.w3cschool.cn/r/r_lists.html
1. 安装库rpy2
1. 下载与本地对应python版本模块,pip install rpy2是安装不上的
下载地址是:http://www.lfd.uci.edu/~gohlke/pythonlibs/#rpy2 这是python下包的专用地址
需要下载版本和平台都相对应的whl包,我下的是rpy2-2.9.4-cp36-cp36m-win32.whl pip install rpy2-2.9.4-cp36-cp36m-win32.whl安装即可。
如果还不行,参考:https://www.cnblogs.com/caiyishuai/p/9520214.html
2. 安装broom --》R语言的一个库--》与R脚本有关,可以忽略
install.packages('broom')
3. 写R脚本
library(broom) test <- function() {
# x <- c(1:1200000)
# y <- c(1:1200000)
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48) relation <- lm(y ~ x)
data <- summary(relation) data_dict <- c() newData <- c(data)
data_dict["residuals"] <- newData["residuals"]
data_dict["coefficients"] = newData["coefficients"]
data_dict["aliased"] = newData["aliased"]
data_dict["sigma"] = newData["sigma"]
data_dict["df"] = newData["df"]
data_dict["r.squared"] = newData["r.squared"]
data_dict["adj.r.squared"] = newData["adj.r.squared"]
data_dict["fstatistic"] = newData["fstatistic"]
data_dict["cov.unscaled"] = newData["cov.unscaled"]
data_dict["p.value"] = c(broom::glance(data))["p.value"] return(data_dict)
} # result <- test()
# print(result)
4. 写python脚本
报错: RuntimeError: R_USER not defined.
解决方案,各种搜索都是环境变量的问题,于是我各种加
还tm不行..........................................又懒得重启
stackflow找到答案
os模块的运用,直接看脚本
import os
os.environ['R_HOME'] = r'C:\Program Files\R\R-3.6.0'
os.environ['R_USER'] = r'C:\python3.6.3\Lib\site-packages\rpy2' #path depe import rpy2.robjects as robjects # ----------------------------------------------> 一定要注意这句,不能放到最上面,因为要先添加环境变量,才能找到这个rpy2。一定要注意
robjects.r.source(r'C:\code\r_test\test_one\test.R')
a = robjects.r('test()')
print(type(a))
# print(list(a))
from pandas import DataFrame
print(a[0])
print(a[0][0])
打印结果,以及转换数据类型,参考:http://rpy.sourceforge.net/rpy2/doc-2.2/html/vector.html#creating-vectors https://blog.csdn.net/suzyu12345/article/details/50587267
5. python传值给R脚本,如何实现, 形参方法1
R脚本: 这个脚本的关键在于如何将list转换为c
library(broom) test <- function(list_data) {
# print(list_data)
# print(class(list_data))
# r语言list 转换成 vector: v = as.vector(unlist(你的list))
x = c(as.vector(unlist(list_data['x'])))
y = c(as.vector(unlist(list_data['y']))) relation <- lm(y ~ x)
data <- summary(relation)
print(data) return(0)
}
python脚本
import os os.environ['R_HOME'] = r'C:\Program Files\R\R-3.6.0'
os.environ['R_USER'] = r'C:\python3.6.3\Lib\site-packages\rpy2' #path depe from pandas import DataFrame as df
import rpy2.robjects as robjects
import time
robjects.r.source(r'C:\code\r_test\test_one\test.R') time1 = time.time() y = robjects.ListVector({
"x":[1, 2, 3],
"y":[1, 2, 3], # 这里可以给float })
a = robjects.r["test"](y)
6. python传值给R脚本,如何实现, 形参方法2:类似python的args
R语言脚本
library(broom) test <- function(...) {
list_data <- list(...) # 类似python的args,可以传递多个参数
print(list_data)
print(class(list_data))
x = c(as.vector(unlist(list_data[1]))) # 注意R是从1开始的
y = c(as.vector(unlist(list_data[2])))
print(x)
print(y) relation <- lm(y ~ x)
data <- summary(relation)
print(data) return(0)
}
python语言
import os os.environ['R_HOME'] = r'C:\Program Files\R\R-3.6.0'
os.environ['R_USER'] = r'C:\python3.6.3\Lib\site-packages\rpy2' #path depe from pandas import DataFrame as df
import rpy2.robjects as robjects
import time
robjects.r.source(r'C:\code\r_test\test_one\test.R') x = robjects.IntVector([151, 174, 138, 186, 128, 136, 179, 163, 152, 131])
y = robjects.IntVector([63, 81, 56, 91, 47, 57, 76, 72, 62, 48]) a = robjects.r["test"](x, y)
python3调用R语言干货的更多相关文章
- .Net调用R语言
///加载自己写的R语言算法库 public List<double> GetZTFB(double[] data) { List<double> par = new List ...
- .net 调用R语言的函数(计算统计值pvalue 对应excel :ttest)
Pvalue 计算 项目设计pvalue计算,但是由于.net 没有类似的公式或者函数,最终决定使用.net 调用R语言 采用.net 调用r语言的公用函数 需要安装 r语言环境 https://mi ...
- (转)python中调用R语言通过rpy2 进行交互安装配置详解
python中调用R语言通过rpy2 进行交互安装配置详解(R_USER.R_HOME配置) 2018年11月08日 10:00:11 luqin_ 阅读数:753 python中调用R语言通过r ...
- shell中调用R语言并传入参数的两种步骤
shell中调用R语言并传入参数的两种方法 第一种: Rscript myscript.R R脚本的输出 第二种: R CMD BATCH myscript.R # Check the output ...
- C# 调用R语言
在.net项目中需要调用Matlab生成的DLL,但是在调用过程中报错,截图如下: 在网上搜索一下资料,看到该博客:https://cn.mathworks.com/matlabcentral/new ...
- Python调用R语言
网络上经常看到有人问数据分析是学习Python好还是R语言好,还有一些争论Python好还是R好的文章.每次看到这样的文章我都会想到李舰和肖凯的<数据科学中的R语言>,书中一直强调,工具不 ...
- JAVA 调用 R 语言
1 简介 R是统计计算的强大工具,而JAVA是做应用系统的主流语言,两者天然具有整合的需要.关于整合,一方面,R中可以创建JAVA对象调用JAVA方法,另一方面,JAVA中可以转换R的数据类型调用R的 ...
- Java调用R语言
R是统计计算的强大工具,JAVA是做应用系统的主流语言.JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的系统. 一.Rserve(远程通信模式) Rserve是一个基于TCP/ ...
- python调用R语言,关联规则可视化
首先当然要配置r语言环境变量什么的 D:\R-3.5.1\bin\x64; D:\R-3.5.1\bin\x64\R.dll;D:\R-3.5.1;D:\ProgramData\Anaconda3\L ...
随机推荐
- debian 10 安装fcitx 后设置
设置好代理后 apt-get install fcitx 后 仍然看不到 语言栏 可能是 在设置fcitx时 的字体太小了 输入法配置 ->外观->字体 加大 即可
- Linux 设备树详解【转】
转自:http://www.pianshen.com/article/428276673/;jsessionid=D90FC6B215155680E0B89A6D060892D4 本文基于天嵌E9V3 ...
- svn 在Windows下用TortoiseSVN checkout 时报认证错误
TortoiseSVN 第一次 checkout(检出)时,需要输入用户名密码,如果第一次你保存了你的用户名密码,那么这个检出的项目以后就会用这个用户名密码,如果你的密码改了之后,就会报一个认证错误的 ...
- 图Lasso求逆协方差矩阵(Graphical Lasso for inverse covariance matrix)
图Lasso求逆协方差矩阵(Graphical Lasso for inverse covariance matrix) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/ka ...
- 1、zabbix监控基础概念
目录 为什么要使用监控? 监控怎么用? 去到一家新公司,应该如何搭建监控系统? 我叫张贺,贪财好色.一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛 ...
- 201871010111-刘佳华《面向对象程序设计(java)》第七周学习总结
201871010111-刘佳华<面向对象程序设计(java)>第七周学习总结 实验时间 2019-10-11 1.实验目的与要求 1) 掌握四种访问权限修饰符的使用特点: (1)进一步理 ...
- 天翼宽带家庭网关用户:useradmin,nE7jA%5m 这个是中国电信的超级密码
天翼宽带家庭网关用户:useradmin,nE7jA%5m 这个是中国电信的超级密码
- zz“老司机”成长之路:自动驾驶车辆调试实践
随着自动驾驶技术的发展,一辆新车从被改装到上路需要经过的调试流程也有了许多提升.今天,我希望结合自己之前的调车经验来跟大家分享一下我们是如何将系统的各个模块逐步上车.调试.集成,进而将一辆“新手”车培 ...
- Windows开机自动登录账户
如何在Windows设了账户密码的情况下开机自动登录账户,有以下两种方法. 通过Windows设置自动登录 按“Win+R”组合键打开“运行”框内输入“netplwiz”. 打开以下窗口,将“要使用本 ...
- Comet OJ CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)
Preface 在一个月黑风高的夜晚我这个蒟蒻正踌躇着打什么比赛好 是继续做一场AGC,还是去刷一场CF 然后,一道金光闪过(滑稽),我们的红太阳bzt给我指明了方向: 你太菜了,我知道有一场很水的比 ...