美文网首页R语言问题集锦
「Debug R」在从名字空间‘XVector’中出口方法时发现

「Debug R」在从名字空间‘XVector’中出口方法时发现

作者: xuzhougeng | 来源:发表于2020-06-15 13:24 被阅读0次

    每当R语言版本更新,Bioconductor的版本随之更替的时候,总会有一些神奇的报错会出现,比如说下面这种。

    Error: package or namespace load failed for ‘GenomicRanges’:
     在从名字空间‘XVector’中出口方法时发现了不是S4通用的函数‘parallelSlotNames’
    

    如果读中文读不懂,我们可以把它翻译成英文。

     package or namespace load failed for ‘GenomicRanges’:
     Function found when exporting methods from the namespace ‘XVector’ which is not S4 generic: ‘parallelSlotNames’
    

    这里有一个关键词,namespace,通常会被翻译成命名空间,在这里指的是一个R包所包括的所有函数。换句话说,XVector里的parallelSlotNames函数出现了问题。

    到底是什么样的问题呢?通过检索3.11 + parallelSlotNames, 我找到了Bioconductor 3.11版本的一项更新日志,在我们强调的部分,里面写着它们将parallelSlotNames()重命名为vertical_slot_name.

    更新日志

    那么问题来了,为什么我知道是这个版本问题呢?一方面是我之前遇到类似的报错,另一方面是我在调试的时候看到了如下的信息

    载入需要的程辑包:GenomeInfoDb
    Error: package or namespace load failed for ‘GenomicRanges’:
     在从名字空间‘XVector’中出口方法时发现了不是S4通用的函数‘parallelSlotNames’
    In addition: Warning messages:
    1: 程辑包‘S4Vectors’是用R版本4.0.0 来建造的 
    2: 程辑包‘IRanges’是用R版本4.0.0 来建造的 
    

    这里写道S4VectorsIRanges是由R4.0.0构建的,而我的R版本才只是3.6.3,R 3.6.3对应Biocondcutor 3.10, R 4.0.0对应Bioconductor 3.11,根据这个警告信息,我找到了问题的源头,也就是一些R包的版本不对。

    因此,我手动删除了S4Vectors和IRanges,并用BiocManager::install(c("S4Vectors", "IRanges"), version="3.10")的方式重装这个R包,最后问题解决了。这里的version="3.10"可以保证自己的版本一定是指定的3.11

    相关文章

      网友评论

        本文标题:「Debug R」在从名字空间‘XVector’中出口方法时发现

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