美文网首页数据-R语言-图表-决策-Linux-PythonDebug RR语言问题集锦
「Debug R」为什么你需要保持R包是最新的?

「Debug R」为什么你需要保持R包是最新的?

作者: xuzhougeng | 来源:发表于2018-12-30 20:52 被阅读146次

今天安装一个最新的R包的时候,提示要对一些依赖包进行更新,我没有管他。结果当我运行以前没有报错的代码时,却出现如下的报错,

报错如下

上面的报错出现在MacOS上,为了找到报错,我用Linux运行相同的代码并没有遇到报错。于是用sessioninfo()对R包版本进行比较。

通过不断的比较,最终将问题定位到XVector上,发现Linux的版本是最新的,而MacOS的版本是旧的。

MacOS Linux

进一步,我发现0.20.0版本是来自于Bioconductor 3. 7, 而最新的Bioconductor版本是3.8. 同时今天安装的包也来自于3.8的Bioconductor,因此出现了不兼容的情况,导致报错。

那么问题来了,XVector到底是什么?一直默默无闻的它到底有什么作用呢?我打开了他的帮助文档,仔细阅读了一下,结论如下:

XVector是R语言自带的Vector的强化,它允许"通过地址传值", 而不需要将在内存中新开辟区域将数据拷贝过去进行运算。 这样子的好处就是节约内存,不然你想获取一个非常大的一个向量中的第i到第j个元素,那你就得先开辟一个很大的一个内存空间,然后在进行取值,最后返回区间内的数值,时间花费非常的大。

读完这个函数之后,你会得出一个结论,XVector 是一个基础设施,提供一个XVector类,其他函数建立在它的基础上。应该还有一个更加底层的东西。

于是我又返回去看我加载包时的Warning信息,有一个concatenateObjectes引起了我的注意。

更底层的问题

我通过谷歌搜索,找到了最终的答案,原来是Bioconductor社区把一个底层函数改名了。所以建立在这个底层函数上摩天大厦就瞬间坍塌了。

3.7 3.8

开源软件的一大问题就在于此,新的工具为了不重复造轮子会依赖于已有成熟工具。已有的工具会不断的更新,如果突然有一天,作者把原有函数全改了,同时他居然还不提供的一个缓冲时间段,也就是让旧函数名和新函数名同时并存一段时间,结果你就傻眼了(放心,一个合格的程序员不会这样子瞎搞的)。

最后给两个建议:

  • 请尽量保证你的R包最新
  • 同时请用那些一直在维护的R包

相关文章

  • 「Debug R」为什么你需要保持R包是最新的?

    今天安装一个最新的R包的时候,提示要对一些依赖包进行更新,我没有管他。结果当我运行以前没有报错的代码时,却出现如下...

  • 汇编 - Debug

    什么是Debug 打开Debug Debug常用功能 R命令 输入“r”可以查看所有寄存器的值 输入“r 寄存器名...

  • R语言如何批量安装软件包

    1. 为什么要批量安装R语言包 当你在新的环境下, 安装R语言时,你需要安装很多包,比如tidyverse,比如d...

  • 「Debug R」Windows无法安装的R包

    R语言的绝大部分包都是全平台通用,Linux是源码编译,macOS和Windows的系统没有Linux那么多发行版...

  • 「Debug R」MacOS编译R包出现gfortran: No

    使用MacOS编译R包的时候,有可能会出现gfortran: No such file or directory的...

  • R | R 包推荐

    【R语言】R语言最新最好用综合包推荐【2022】 - 张敬信的文章 - 知乎https://zhuanlan.zh...

  • 【R>>updateR】更新R及Rstudio

    好久不用R了,突然用起来发现好多R包都需要更新,那就顺便把R和Rstudio都更新下吧。 1.更新R 更新R用的是...

  • R语言基础学习1

    1.学会安装R(一般不推荐安装最新版本的R,R包更新速度慢,产生不兼容的情况),再安装 R编译软件Rstudio(...

  • 包名加函数名调用方式-解决"unable to find an

    以前不明白为什么在R中使用函数需要加个包名,今天算是明白了,因为有写内置函数在多个包中都有,你不加的话R就不知道该...

  • 学习小组Day6笔记

    什么是R包?R包是多个函数的集合,具有详细的说明和示例。不同的R包具有不同的功能。 R包的安装install.pa...

网友评论

    本文标题:「Debug R」为什么你需要保持R包是最新的?

    本文链接:https://www.haomeiwen.com/subject/cvqblqtx.html