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语言干货的更多相关文章

  1. .Net调用R语言

    ///加载自己写的R语言算法库 public List<double> GetZTFB(double[] data) { List<double> par = new List ...

  2. .net 调用R语言的函数(计算统计值pvalue 对应excel :ttest)

    Pvalue 计算 项目设计pvalue计算,但是由于.net 没有类似的公式或者函数,最终决定使用.net 调用R语言 采用.net 调用r语言的公用函数 需要安装 r语言环境 https://mi ...

  3. (转)python中调用R语言通过rpy2 进行交互安装配置详解

    python中调用R语言通过rpy2 进行交互安装配置详解(R_USER.R_HOME配置) 2018年11月08日 10:00:11 luqin_ 阅读数:753   python中调用R语言通过r ...

  4. shell中调用R语言并传入参数的两种步骤

    shell中调用R语言并传入参数的两种方法 第一种: Rscript myscript.R R脚本的输出 第二种: R CMD BATCH myscript.R # Check the output ...

  5. C# 调用R语言

    在.net项目中需要调用Matlab生成的DLL,但是在调用过程中报错,截图如下: 在网上搜索一下资料,看到该博客:https://cn.mathworks.com/matlabcentral/new ...

  6. Python调用R语言

    网络上经常看到有人问数据分析是学习Python好还是R语言好,还有一些争论Python好还是R好的文章.每次看到这样的文章我都会想到李舰和肖凯的<数据科学中的R语言>,书中一直强调,工具不 ...

  7. JAVA 调用 R 语言

    1 简介 R是统计计算的强大工具,而JAVA是做应用系统的主流语言,两者天然具有整合的需要.关于整合,一方面,R中可以创建JAVA对象调用JAVA方法,另一方面,JAVA中可以转换R的数据类型调用R的 ...

  8. Java调用R语言

    R是统计计算的强大工具,JAVA是做应用系统的主流语言.JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的系统. 一.Rserve(远程通信模式) Rserve是一个基于TCP/ ...

  9. 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 ...

随机推荐

  1. [视频教程] 配置vscode的PHP自动补全提示与使用Xdebug进行远程调试debug

    默认下载安装完的vscode并不能准确提示和检测PHP的语法错误,需要手动指定一下本机的PHP程序路径.按下面的操作配置完后就能在文件保存的时候检测语法有无错误.打开文件->首选项->se ...

  2. 最长上升子序列(LIS: Longest Increasing Subsequence)

    示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4. 从网上找的一段代码(我由java改为了C++版本),原作者 ...

  3. 1.Python爬虫入门_urllib

    #2019-11-22 import urllib.request #Pthon自带的网络连接库 import gzip #解压缩库 #程序入口 if __name__=='__main__': #u ...

  4. 初学JavaScript正则表达式(十一)

    JavaScript的对象属性 整理自慕课网教学 点此进入

  5. Redis学习笔记(六、哨兵)

    目录: 基本概念 环境部署 哨兵原理 哨兵命令 基本概念: 1.什么是哨兵 我们先从字面意思来了解哨兵,哨兵是对执行警戒任务的士兵的统称:在redis中哨兵也是一样,他监控着redis服务器的状态. ...

  6. 201271050130-滕江南-《面向对象程序设计(java)》第十二周学习总结

    201271050130-滕江南-<面向对象程序设计(java)>第十二周学习总结 项       目 内      容 这个作业属于哪个课程 https://www.cnblogs.co ...

  7. LG5104 红包发红包 概率与期望

    问题描述 LG5104 题解 观察发现,对于 \(w\) ,期望得钱是 \(\frac{w}{2}\) . 然后答案就是 \(\frac{w}{2^k}\) . 然后快速幂求个逆元就好了. \(\ma ...

  8. Unity S老师系列课程学习

    AssetBundle(创建打包)入门学习(基于Unity2017) (已看) 分组策略 逻辑实体分组 按照类型分组 按照使用分组 分组策略----总结 把经常更新的资源放在一个单独的包里面,跟不经常 ...

  9. Note | 论文写作笔记

    目录 1. 规范 2. 语法 3. 其他 4. 好图好表 5. 好表达 我们的工作很重要 我们的工作有意义 我们的工作细节 我们怎么组织这篇文章 最终效果出类拔萃 怎么解释我们的成功 写完逐条核对吧. ...

  10. Linux下启动SpringBoot打包的jar

    前言 这两天把视力档案后台部署的方式改了一下,由原来打包成war包,部署到一个tomcat里面,转变成直接打包成jar包,然后使用 java -jar命令进行启动 下面讲讲遇到的问题 1)java - ...