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

How to deal with problems in commands resulted from a version update of R?

我是R的小白,最近不知不觉把电脑上的R从4.0.2更新到了4.0.3。在我用 4.0.3 成功替换旧版本并再次安装所有相关包后,我终于意识到我在 4.0.2 版本中编写的命令在 4.0.3 环境中不起作用。 (我的克星你们一定很熟悉,但不幸的是,我发现真相的时间太晚了)这是我的问题。首先,如果命令在版本之间不兼容,原因是更新的包还是更新的 R?其次,I/do 您可以如何以及在何处修改升级代码?

我一直在做的是读取台湾的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

第二个:(“table”是一个带地理数据的dataframe,要转成和上面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

还有最后一个,它打算计算 table 在 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() 命令中加载它的日期。如果您意识到更新破坏了您的代码,您可以通过保留旧日期返回到以前的版本,或者使用 groundhog 找到问题的根源并相应地更新您的代码。

http://groundhogr.com

阅读更多内容