正如您所知,正確的方法是編寫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軟件包。 –