专栏名称: 生信媛
生信媛,从1人分享,到8人同行。坚持分享生信入门方法与课程,持续记录生信相关的分析pipeline, python和R在生物信息学中的利用。内容涵盖服务器使用、基因组转录组分析以及群体遗传。
目录
相关文章推荐
51好读  ›  专栏  ›  生信媛

明明装好的R包,为啥还用不了,你需要fxxkit

生信媛  · 公众号  · 生物  · 2019-11-24 20:17

正文

请到「今天看啥」查看全文


大部分情况下,从CRAN或Bioconductor上安装R包并不是一件复杂的事情。

但有一类问题非常让我难受,那就是明明已经安装的R包,却在加载的时候告诉我用不了。

  1. > library("clusterProfiler")

  2. 错误: package or namespace load failed for clusterProfiler in loadNamespace(j i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]):

  3. 不存在叫‘DO.db’这个名字的程辑包

于是,我就得复制DO.db,然后用 BiocManager :: install ( "DO.db" ) 安装那个R包。运气好的话,安装完一个R包就行,但是运行不好,你可能就要连环安装多个包。

这个问题只会在部分电脑上出现,估计是包的依赖解析出现了问题,你可能无法通过重装之前的R包解决,就得一直复制粘贴,所以让我非常暴躁。当然我遇的多了,顶多是复制粘贴几次就能搞定,但是对于小白而言,估计就束手无策了。

为了搞定让自己一劳永逸的搞定问题,我就写了一个fxxkit函数,专门搞定这问题

通过下面这行代码加载我的函数,

  1. source("https://raw.githubusercontent.com/xuzhougeng/myscripts/master/zgtools.R")

然后当下次遇到问题时,勇敢的fxxkit

如果你发现自己缺少一个包(注意,这个包必须得有哦),JUST fxxkit()

最终你的R包装好了,也达到了inner peace。

另附源代码

  1. fxxkit function(){


  2. # set the language to english

  3. env Sys.getenv("LANGUAGE")

  4. on.exit(Sys.setenv("LANGUAGE" = env))

  5. Sys.setenv("LANGUAGE" = "en")


  6. # get the history

  7. file1 tempfile("Rrawhist")

  8. savehistory(file1)

  9. rawhist readLines(file1)

  10. unlink(file1)


  11. # get the package name

  12. rawhist rawhist[grepl("^library|^require", rawhist)]

  13. rawhist rawhist[length(rawhist )]

  14. package.name strsplit(rawhist, "\\(|\\)")[[1]][2]

  15. package.name gsub("'|\"","", package.name)


  16. # get the dependent package

  17. text try(library(package.name, character.only = TRUE))


  18. # extract the package name from error message

  19. package.name gsub(".*called ‘(.*?)’.*", "\\1", text[1])


  20. # download package

  21. if (!requireNamespace("BiocManager", quietly = TRUE)){

  22. install.packages("BiocManager")

  23. }

  24. BiocManager::install(package.name)


  25. }








请到「今天看啥」查看全文