如何处理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,0,0,0,0,0 +units=m +no_defs

第二个:(“表”是一个包含地理数据的数据框,将被转换为与上面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,0,0,0,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上表的重叠数:

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阅读更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章