【问题标题】:How to Call Python from R in a Windows OS?如何在 Windows 操作系统中从 R 调用 Python?
【发布时间】:2014-06-04 19:50:01
【问题描述】:

我正在寻找一种在 Windows 操作系统上的 R 中调用 python 的方法。由于似乎没有现成的 R 包(至少没有最近更新的包),我正在寻找有关如何在 R 脚本中编写一组命令的线索,然后可以以批处理模式发送到Python。

简而言之,如何在 Windows 操作系统中从 R 调用 python?

编辑:澄清一下,我不是询问是否从 python 调用 R;相反,我问的是从 R 调用 python。

更新:根据我目前收集到的信息,以下是在 Windows 操作系统中从 R 运行 python 的一组基本命令:

# (1) basic python commands called from R
system('python -c "a = 2 + 2; print a"') 
system('python -c "a = \'hello world\' ; print a; import pandas"')

# (2) if you have a python file you've already created (which I've referred to as "my.py"), then you can run it in R as follows:
system("python C:\\Users\\Name\\Desktop\\my.py")

# or alternatively:
system('python -c "import sys; sys.path.append(\'C:\\Users\\Name\\Desktop\'); import my;"')

这些方法都没有达到在 Windows 操作系统上使用 R 语言中的 python 进行流体数据分析所需的交互性水平。最直接的解决方案可能是编写一个简单的 R 函数,该函数 (1) 将指定的 R 数据帧导出到 python,(2) 解析用 R 编写的 python 语法(使用 stringrsystem('python -c')),然后 (3)可选择将数据导出回 R。这将是 R 中基于通过 R 控制台更新临时 python 文件的伪交互。

【问题讨论】:

  • 这是另一个关于从 R 调用 python 的有用链接。stackoverflow.com/questions/10155703/…
  • 这是一个很好的问题,因为它提醒我从 R 调用 python 是可能的。但是,OP 是否可以教育像我这样的人为什么这是一个可能想要做的事情?
  • 我需要在 Python 中安装任何特殊的库吗?在打开 Python 的情况下在 RStudio 中运行上面的代码什么也没做 :((

标签: python r statistics


【解决方案1】:

你可以使用这个包PythonInR

【讨论】:

  • 如果你已经探索了rPython-win,它与使用 PythonInR 相比如何?
  • @AnalyticalMonk。当我尝试 rPython-win 时,出现此错误:安装到库 'C:/Users/.../Documents/R/win-library/3.5' 错误:仅 Unix 包 * 删除 'C:/Users/ .../Documents/R/win-library/3.5/rPython' 在 R CMD 安装中。任何想法如何解决这个错误?
  • @A.Shlash。同样,当我尝试 PythonlnR 时,我收到错误消息:警告消息:在 pyConnectionCheck() 中:R 未连接到 Python!有什么想法吗?
【解决方案2】:

制作一个python文件....

# -*- coding: utf-8 -*-
"""
Created on Wed Mar  9 09:55:46 2016

@author: Subhash Jaini
"""

import pandas as pd
d = {'First' : [1., 2., 3.],'Second' : [1,2,3]}


AA = pd.DataFrame(d)
print(AA)

保存到一个地方(我使用了 c:/deleteme/pythonRun.py)

在 R 中,运行此代码。

#calls the python script to run in shell
BlobReturnedFromPython = shell('python c:/deleteme/pythonRun.py',intern=TRUE)
#get the first line and turn it to your header
HEADER = gsub(" ","",unlist(strsplit(as.character(BlobReturnedFromPython[1]),"  ")))[-1]
#all the rest of the data is non header data
NONHEADER = BlobReturnedFromPython[2:(length(BlobReturnedFromPython)-1)]
#turnthat blob (which is seperated by about 4 spaces )
DATA = data.frame(sapply(NONHEADER,function(x){unlist(strsplit(x,"    "))}))
#brings those names into the data set
names(DATA) <- HEADER
DATA    

【讨论】:

    【解决方案3】:

    我找到了一个可以在 Windows 操作系统上实际运行的解决方案:

    http://gallery.rcpp.org/articles/rcpp-python/

    本文描述了 Ubuntu 的设置,其中 Rcpp 用作 R 和 Python 之间的中间层。虽然我还没有尝试过,但我目前看不出为什么这个解决方案也不能在 Windows 上运行。

    【讨论】:

      【解决方案4】:

      如果您正在寻找从 R 调用 python,请尝试rPython,但它不适用于 Windows 操作系统。 或者试试RSPython对windows的支持较弱。另一个有用的link

      最后您可以尝试使用Cygwin 之类的东西在您的Windows 操作系统上执行Linux 应用程序。更多的工作量将是在 Windows 上使用一些虚拟环境,如 VMwareVirtualBox 并安装 linux 并执行您的工作。

      【讨论】:

      • 感谢您的回复,但 rPython 无法在 Windows 操作系统中运行。正如您链接到的博客总结的那样:“rPython 包的主要缺点是它目前不能在 Windows 上运行。”您的其他链接也指向在 Windows 中不起作用的软件包,正如其中一位作者写的关于 RSPython 的那样:“注意:这目前不允许在 Windows 上的 Python 中嵌入 R。”
      猜你喜欢
      • 2021-06-03
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 2012-03-22
      • 1970-01-01
      • 2012-01-03
      相关资源
      最近更新 更多