【问题标题】:RPy2 Convert Dataframe to SpatialGridDataFrameRPy2 将 Dataframe 转换为 SpatialGridDataFrame
【发布时间】:2012-06-02 20:12:24
【问题描述】:

如何使用 R maptools 库将 Dataframe 转换为 SpatialGridDataFrame?我是 Rpy2 的新手,所以这可能是一个非常基本的问题。

R 代码是: 坐标(dataf)=~X+Y

在 Python 中:

import rpy2
import rpy2.robjects as robjects
r = robjects.r
# Create a Test Dataframe 
d = {'TEST': robjects.IntVector((221,412,332)), 'X': robjects.IntVector(('25', '31', '44')), 'Y': robjects.IntVector(('25', '35', '14'))}
dataf = robjects.r['data.frame'](**d)
r.library('maptools')
# Then i could not manage to write the above mentioned R-Code using the Rpy2 documentation

除了这个特殊的问题,我很高兴能就更一般的想法得到一些反馈:我的最终目标是使用 gstat 库对空间数据进行回归克里金法。 R 脚本工作正常,但我想从 Python/Arcgis 调用我的脚本。您如何看待这项任务,这可以通过 rpy2 实现吗?

非常感谢! 理查德

【问题讨论】:

    标签: rpy2 maptools


    【解决方案1】:

    在某些情况下,Rpy2 仍然无法动态(和自动)生成智能绑定。

    对 R 代码的分析会有所帮助:

    coordinates(dataf)=~X+Y
    

    这可以更明确地写成:

    dataf <- "coordinates<-"(dataf, formula("~X+Y"))
    

    最后一个表达式使 Python/rpy2 直截了当:

    from rpy2.robjects.packages import importr
    sp = importr('sp') # "coordinates<-()" is there
    
    from rpy2.robjects import baseenv, Formula
    maptools_set = baseenv.get('coordinates<-')
    dataf = maptools_set(dataf, Formula(' ~ X + Y'))
    

    要(明智地)明确“坐标

    maptools_set = getattr(sp, 'coordinates<-')
    

    【讨论】:

    • 感谢您的帮助!不幸的是,我收到“ImportError:没有名为包的模块”。我在 Windows 上工作并使用 Rpy 2.08,并且已阅读包模块仅可从 Rpy > 2.1 获得。但是,这些新版本不受 Windows 支持(?)。
    • 在 bitbucket 问题跟踪器中有一个针对 rpy2-2.2.4 的针对 win32 的暂定贡献构建。否则,没有对 Windows 的公开支持(我缺乏贡献和资源,这两者很可能是相关联的)。
    猜你喜欢
    • 2021-01-30
    • 1970-01-01
    • 2012-07-03
    • 2015-02-18
    • 2020-06-22
    • 1970-01-01
    • 2011-02-09
    • 2014-07-31
    • 1970-01-01
    相关资源
    最近更新 更多