我一直在使用QGIS python控制台来自动化我的需求。我使用了一些处理算法(例如距离矩阵)来处理输出csv文件的矢量图层。我需要使用R来处理这些文件,然后再将它们作为变量返回到我的python控制台。
有没有办法可以直接通过python控制台运行R(可能使用rpy2等软件包?)
答案 0 :(得分:0)
我猜你可以使用rpy2
轻松地与QGis python控制台中的R实例进行交互。
在QGIS python控制台中尝试以下以下代码行:
>>> import rpy2.rinterface as rinterface
>>> rinterface.set_initoptions((b'rpy2', b'--no-save'))
>>> rinterface.initr()
0
>>> from rpy2.robjects.packages import importr
>>> import rpy2.robjects as robjects
您现在可以像这样与R互动:
>>> robjects.r("""seq(1,12);""")
<IntVector - Python:0x7fa5f6e4abd8 / R:0x769f4a8>
[ 1, 2, 3, ..., 10, 11, 12]
或者导入一些库,例如:
>>> rutils = importr("utils")
>>> rgraphics = importr('graphics')
看看documentation of Rpy2,我已成功使用这些方法运行一些个人脚本或从CRAN安装的一些库(在robjects.r("""...""")
中运行多个语句并在python变量中获取输出在QGIS中使用。)
(如果我记得很清楚,在Windows上我必须首先设置一些环境变量,例如R_HOME
或R_USER
另外,如果您还没有看到它,请查看QGIS文档的此页面:17.31. Use R scripts in Processing。它提供了一种方便的方法来使用现有的R脚本并稍加添加。