信息技术改变生活

Xiaobo Wu'shared space

R package [earth] error report

今天用到了R package earth ,该包有个数据挖掘的多元自适应回归样条法(multivariate adaptive regression splines),但是,用该方法来分类时,就会出Bug。如下面的Bug提示信息:

Error in ylevels[apply(map.RF, 1, which1)] : 
  invalid subscript type 'list'

查找原因花了几个小时,终于发现错误的源头。

总结一些用于土壤制图的R包

R对土壤数据的制图(digital soil mapping DSM)支持的功能还是比较全面的,本文主要整理一下最近用到的、不可或缺的R packages,主要分为:

  • (1)GIS:空间数据(矢量和栅格)处理和分析,包括sp、raster、rgdal、RSAGA、maptools;
  • (2)模型:土壤制图所需要的分类模型,包括caret、Cubist、C5.0、gam、nnet、gstat;
  • (3)出图:探索性分析和出图,包括ggplot2;
  • (4)专业:包括soilPhysical(如土壤水分特征曲线的分析),soilTexture,GSIF。

各包具体链接如下:


R根据Polygon分组Point

R根据shapefiles包可以读取Shapefile,并依据sp Link 包对空间数据处理,其中一个基本的需求是对空间点按照不同的Ploygon分组,要实现了这一基本功能,主要用到Sp的over函数,该函数返回Ponit所在Ploygon的ID。

修改记录(2015.5.20): 如Polygon较复杂(如有岛、洞等),用shapefiles包出了问题,可能原因是convert.to.simple简化后,Ploygon的上点顺序发生变化,所以在取点的位置时,有的点明明在Ploygon里面而没有找到。但可以用mapTools Link 包readShapeSpatial函数可以解决,该函数使shapefiles一下子就转换成SpatialPolygonsDataFrame对象了,该对象也可以直接用于over函数的参数,这种方法可以说更简单,更合理,更高效,推荐首选这种方法。

R根据经纬度位置提取栅格值

根据经纬度提取栅格值很常用,也有很多方法,如ArcGIS,但只能提取单波段值;其他ENVI+IDL估计要多行代码才能实现,如Code,但是,R语言的Raster包,很简单,只用函数extract即可(http://www.inside-r.org/packages/cran/raster/docs/extract)。需要说明的是如果是多波段,需要用stack读入栅格,否则只能获取第一波段的值。示例代码如下(多点同时提取):

R语言-科研必备工具

这2天初步学习了一下R语言,主要用R做土壤剖面数据整理,R有个优秀的包(AQP),就仅仅这个包而言,给人的感觉就很震撼,所以,R值得学习。相比其他高级语言(如Matlab,IDL),R的优势不是完整连贯的统计分析工具,优秀的统计制图功能,而是它属于GNU系统的一个自由、免费、源代码开放的软件,正因为如此,CRAN(Comprehensive R Archive Network)使它拥有很多的实用包,新手可以学习的资源很多,如http://cran.r-project.org/other-docs.html这个网站就不错,如果你学过编程语言,应该几天就能熟悉并能写出基本的R脚本了,下面展示本人收集的一点儿资料,共享给大家,相信作为入门足够了。此外,R也加入对面向对象的支持,面向对象入门学习可以参考http://www.tuicool.com/articles/VVBVna