2012-05-28 85 views
0

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

将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?

非常感谢! Richard

回答

0

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

将R代码的分析将帮助:

coordinates(dataf)=~X+Y 

这可以更明确地写为:

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

这最后的表达使的Python/rpy2 straigtforward:

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')) 

明确地说明“坐标< - ”来自何处m,使用:

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

感谢您的帮助! 不幸的是我得到了“ImportError:No module named packages”。 我在Windows上工作并使用Rpy 2.08,并且已经阅读过软件包模块仅适用于Rpy> 2.1。但是,这些新版本不支持Windows(?)。 – user1421706

+0

在bitbucket问题跟踪器中,针对rpy2-2.2.4有一个针对win32的试用贡献版本。否则,没有公众对Windows的支持(缺乏贡献和缺乏资源来奉献给我,这两者最有可能联系在一起)。 – lgautier