微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何处理R版本更新导致的命令问题?

如何解决如何处理R版本更新导致的命令问题?

我是R的新手,最近不知不觉把电脑上的R从4.0.2升级到了4.0.3。在我用 4.0.3 成功替换旧的并再次安装所有相关包后,我最终意识到我在 4.0.2 版本中编写的命令在 4.0.3 环境中不起作用。 (我的死对头大家应该都很熟悉了,可惜最近才知道真相)以下是我的问题。第一,如果命令在版本之间不兼容,哪个是原因,更新的包还是更新的 R?其次,我/您可以如何以及在哪里修改升级代码

我一直在做的是读取台湾的shapefile来获取地图。还有这里不兼容的代码,都是用R 4.0.2格式写的:

Shapefile <- readOGR(dsn = "directory",layer = "Popn_TWN2")

### Warning message:
In OGRSpatialRef(dsn,layer,morphFromESRI = morphFromESRI,dumpSRS = dumpSRS,:
  discarded datum Taiwan_Datum_1997 in CRS deFinition: +proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0 +units=m +no_defs

第二个:(“table”是一个包含地理数据的数据框,将被转换为与上面Shapefile相同的坐标系)

assign("table",spTransform(tableData,CRS("+proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0 +units=m +no_defs")))

### Warning message:
In showSRID(uprojargs,format = "PROJ",multiline = "NO",prefer_proj = prefer_proj) :
  discarded datum UnkNown based on GRS80 ellipsoid in CRS deFinition

还有最后一个,打算统计Shapefile上table的重叠次数

assign("over",table(over(table,Shapefile)$TOWN))

### Error in .local(x,y,returnList,fn,...) : 
  identicalCRS(x,y) is not TRUE

所以,我正在寻找的是在命令和可能的解决方案中识别错误。如果我的描述不够充分,请告诉我。

解决方法

为了防止在更新 R 时发生这种情况,您可以使用 groundhog 包,该包使加载 R 包的调用特定于版本(因此使用 groundhog.library(,) 而不是 library()

例如

library('grounhdog')
groundhog.library('rgdal','2020-10-11')

将始终加载相同版本的“rgdal”,即 2020 年 10 月 11 日当前的版本,即使您安装了新版本的 R。您当然可以通过简单地更改使用日期来更新“rgdal”在 groundhog.library() 命令中加载它。如果您发现更新破坏了您的代码,您可以通过保留旧日期返回到以前的版本,或者使用土拨鼠查找问题的根源并相应地更新您的代码。

http://groundhogr.com 阅读更多

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。