RPy2将Dataframe转换为SpatialGridDataFrame

时间:2012-05-28 12:52:41

标签: rpy2 maptools

如何使用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吗?

非常感谢! 理查德

1 个答案:

答案 0 :(得分:0)

在某些情况下,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'))

要(明智地)明确“坐标&lt; - ”的来源,请使用:

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