正如您所知,正确的方法是编写Matrix::colSums
。
一个简单的解决方案,这并不需要重写你的代码将添加一行
colSums <- Matrix::colSums
地方在你的代码。那么这colSums
属于你的全球环境,因此在任何其他图书馆之前。
编辑
我发现了一个更好的解决方案。 我将用plyr
和dplyr
进行演示,因为它们都具有arrange
功能并导致冲突。
示例1。 dplyr
稍后加载,因此获胜。
library(plyr)
library(dplyr)
environment(arrange)
# <environment: namespace:dplyr>
例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.你可以在搜索列表中指定要加载库的位置; pos
的说法。
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"
总之,你可以加载Bioconductor
库给予了大量的pos
。 这就是说,你说Bioconductor
取决于S4Vector
和S4Vector
是造成冲突的原因之一。不幸的是,由于require
声明在Bioconductor
包内,因此您无法直接控制依赖包的位置。
一种解决方法是,您加载S4Vector
先用pos
选项,然后加载Bioconductor
:
library(S4Vector, pos=10) # replace 10 by an appropriate large number
library(Bioconductor)
然后,S4Vector
将被放置在搜索顺序Matrix
后。
又一解决方案
如果你想重装Matrix
,那么你也可以不喜欢:
library(dplyr)
library(plyr)
environment(arrange)
# <environment: namespace:plyr>
unloadNamespace("dplyr")
library(dplyr)
environment(arrange)
# <environment: namespace:dplyr>
更新:最好的办法是建议由哥打森,使用“unloadNamespace”功能第一在重新加载之前卸载Matrix软件包。 –