R-如何重新加载功能(或更改包优先级)
我正在使用矩阵库处理稀疏矩阵。有时,我需要运行一个使用Bioconductor包的函数,该包依赖于S4Vectors库。不幸的是,矩阵中的“colSums”函数与S4Vectors中的“colSums”函数冲突。因此,当我运行这个函数时,它破坏了我的“colSums”函数,这真的很烦人 我知道这个问题有两种常见的解决方案: 1) 在加载矩阵库之前加载Bioconductor包-但是,我很少使用此函数,因此我更愿意只在需要时加载Bioconductor包。 2) 不要调用“colSums”,而是调用“Matrix::colSums”-然而,这非常不方便,我需要更改我的整个代码库 理想情况下,我只需加载Bioconductor包,运行我的函数,然后通过卸载Bioconductor包或重新加载Matrix包来清理我的环境。然而,我在做这些方面有困难。首先,是否可以重新加载矩阵::colSums(以替换S4Vectors::colSums)?其次,当我尝试卸载S4Vectors时,R会抱怨,因为许多其他包都依赖于它 所以除了一个显而易见的问题,为什么S4Vectors的函数与R中最常用的稀疏矩阵包冲突,我想知道这个问题的最佳解决方案是什么?简单地重新加载一个包可能不会那么困难,对吗?示例:R-如何重新加载功能(或更改包优先级),r,matrix,sparse-matrix,s4,bioconductor,R,Matrix,Sparse Matrix,S4,Bioconductor,我正在使用矩阵库处理稀疏矩阵。有时,我需要运行一个使用Bioconductor包的函数,该包依赖于S4Vectors库。不幸的是,矩阵中的“colSums”函数与S4Vectors中的“colSums”函数冲突。因此,当我运行这个函数时,它破坏了我的“colSums”函数,这真的很烦人 我知道这个问题有两种常见的解决方案: 1) 在加载矩阵库之前加载Bioconductor包-但是,我很少使用此函数,因此我更愿意只在需要时加载Bioconductor包。 2) 不要调用“colSums”,而是调
library(lubridate)
卢布德里德日期超过了日期。弹出一条消息说:以下对象被“package:base”屏蔽:date
但是您仍然可以使用原始的日期函数
base::date()
所以你不用看装载顺序。只需具体说明您使用的函数 正如您所知,正确的方法是编写
Matrix::colSums
一个不需要重写代码的简单解决方案是添加一行代码
colSums <- Matrix::colSums
例2<代码>plyr获胜
# unload libraries
unloadNamespace("plyr")
unloadNamespace("dplyr")
library(dplyr)
library(plyr)
environment(arrange)
关键是搜索顺序,您可以通过search
功能找到该顺序。
下面,您可以看到plyr
位于dplyr
之前
search()
# [1] ".GlobalEnv" "package:plyr" "package:dplyr" "tools:rstudio"
# [5] "package:stats" "package:graphics" "package:grDevices" "package:utils"
# [9] "package:datasets" "package:methods" "Autoloads" "package:base"
例3。您可以指定要在搜索列表中加载库的位置<代码>位置参数
unloadNamespace("plyr")
unloadNamespace("dplyr")
library(plyr)
library(dplyr, pos=length(search()))
environment(arrange)
# <environment: namespace:plyr>
search()
# [1] ".GlobalEnv" "package:plyr" "tools:rstudio" "package:stats"
# [5] "package:graphics" "package:grDevices" "package:utils" "package:datasets"
# [9] "package:methods" "Autoloads" "package:dplyr" "package:base"
然后,S4Vector
将按搜索顺序放置在矩阵
之后
另一个解决方案
如果要重新加载矩阵,还可以执行以下操作:
library(dplyr)
library(plyr)
environment(arrange)
# <environment: namespace:plyr>
unloadNamespace("dplyr")
library(dplyr)
environment(arrange)
# <environment: namespace:dplyr>
库(dplyr)
图书馆(plyr)
环境(安排)
#
unloadNamespace(“dplyr”)
图书馆(dplyr)
环境(安排)
#
谢谢!这是一个完美的解决方案,我非常感谢您的帮助。更新:Kota Mori推荐了最好的解决方案,使用“unloadNamespace”函数在重新加载矩阵包之前先卸载它。
library(S4Vector, pos=10) # replace 10 by an appropriate large number
library(Bioconductor)
library(dplyr)
library(plyr)
environment(arrange)
# <environment: namespace:plyr>
unloadNamespace("dplyr")
library(dplyr)
environment(arrange)
# <environment: namespace:dplyr>