【R语言】完美解决devtools安装GitHub包失败的问题(以gwasglue为例)
- Rstudio,R4.3.1,命令在Rstudio的命令行即console中运行。
一、问题复述
使用devtools安装一个github的包。
devtools:
devtools
是 R 语言中一个非常有用的包,它提供了一套工具和函数,用于开发、测试和维护 R 包,devtools
可以帮助 R 包的开发人员更轻松地进行包的创建、文档编写、测试和发布等任务。 devtools
的一些主要功能和用途:
创建新的 R 包:
devtools
提供了一个函数create()
,可以用于创建新的 R 包的框架,包括必要的目录结构和文件。加载和安装包:
devtools
提供了load_all()
函数,它可以加载包的最新版本到 R 会话中,使开发者可以更快速地测试和调试包的功能。此外,install()
函数可以用于安装包。文档编写:
devtools
提供了document()
函数,用于自动生成包的文档,包括 Roxygen2 风格的注释,这些注释可以用于生成包的帮助文档。测试:
devtools
通过test()
函数支持包的测试,开发者可以编写测试用例来确保包的功能正常工作。这有助于减少错误和提高包的质量。检查和验证包:
devtools
提供了check()
函数,它可以运行 R CMD check 命令,用于检查包是否符合 CRAN(Comprehensive R Archive Network)的要求,以便发布到 CRAN 上。发布和分享包: 一旦开发者完成了包的开发和测试,
devtools
提供了release()
函数,用于将包发布到 CRAN 或其他 R 包仓库。包的依赖管理:
devtools
还支持包的依赖关系管理,可以帮助开发者管理包的依赖关系,确保包在不同环境中的兼容性。
安装devtools,和安装其他包一样的:
install.packages("devtools")
使用devtools安装GitHub的包:
devtools::install_github("mrcieu/gwasglue")
报错:
二、分析
首先看报错信息,这是解决编程问题最基本的步骤。
我先看的时download xxxx failed。这个问题通常时网络问题,但是我的电脑不可能出现这种问题😉
但是,读者需要先解决网络问题,首先确保你的电脑能流畅访问GitHub,最简单的方法就是修改hosts文件(本地dns缓存,就是把github的域名解析陈ip地址,github有很多ip地址(CDN),有的ip地址是网络可以直接访问的)。如果你的网络有问题,又不太会修改hosts文件,直接下载我的小程序就可以修改了:https://download.csdn.net/download/weixin_43764974/87405879
或者你直接开代理(如果你会搭建或者有其他的话)。
排除了网络问题,报错信息就剩一行了:
Error in utils::download.file(url, path, method = method, quiet = quiet,
我这方面有点经验,一眼就觉得 utils的method 可能存在问题。
utils:
utils是R语言的一个基础包,它提供了一些有用的函数,用于编程和开发R包。utils包的功能包括:
- 数据导入和导出,例如read.table、write.table、read.csv、write.csv等。
- 数据探索和处理,例如str、summary、head、tail、View等。
- 帮助文档的查看和管理,例如help、help.search、browseVignettes等。
- R包的安装和更新,例如install.packages、update.packages、available.packages等。
- R会话的管理和配置,例如q、save、load、options、sessionInfo等。
- 其他一些实用的工具,例如combn、choose、menu、timestamp、txtProgressBar等。
OK,问题已锁定👌
三、解决
既然是utils
的method
有问题,就先看看method
的值:
Rstudio的命令行输入:
getOption("download.file.method")
输出的method
值可能是:
- “
internal
”:使用R内置的函数来下载文件,这种方法适用于所有平台,但不支持https://和ftps://协议,也不支持重定向和缓存控制。 - “
wininet
”:使用Windows操作系统上的WinINet函数来下载文件,这种方法只适用于Windows平台,支持https://协议和一些重定向,但不支持ftps://协议和缓存控制。 - “
libcurl
”:使用libcurl库来下载文件,这种方法需要R编译时支持该库,支持https://和ftps://协议和重定向,也支持同时下载多个文件。 - “
wget
”:使用Wget工具来下载文件,这种方法需要在系统上安装Wget程序,并在可执行文件的搜索路径中,支持https://和ftps://协议和重定向,但会阻塞R进程直到完成。 - “
curl
”:使用Curl工具来下载文件,这种方法需要在系统上安装Curl程序,并在可执行文件的搜索路径中,支持https://和ftps://协议和重定向,但会阻塞R进程直到完成。 - “
auto
”(默认值):R将根据操作系统和配置自动选择下载方法,在Unix类似平台上使用"libcurl"方法,在Windows平台上使用"wininet"方法。
我的默认值是libcurl
,通过测试,修改为wininet
即可成功下载。(至少curl和wget你不应该感到陌生)
可以在命令行输入:
options(download.file.method = "wininet")
不过这是暂时的,下一次打开Rstudio就失效了,需要修改R的配置文件。
R配置文件:
R的配置文件是一些用来设置R环境和选项的文本文件,它们可以在不同的位置和级别存在,例如R安装目录、用户目录或当前工作目录。R启动时会按照一定的顺序读取这些配置文件,并执行其中的代码。
R的配置文件主要有以下几种:
Rprofile.site
:这是一个站点级别的配置文件,它位于R安装目录的etc子目录中,例如C:\Program Files\r\r-n.n.n\etc\Rprofile.site。这个文件会在每次启动R时最先被读取,它可以用来设置全局的选项或变量。.Renviron
:这是一个用来设置环境变量的配置文件,它可以位于R安装目录、用户目录或当前工作目录中,例如C:\Program Files\r\r-n.n.n\etc\.Renviron、C:\Users\username\.Renviron或D:\project\.Renviron。这个文件会在每次启动R时紧接着Rprofile.site被读取,它可以用来告诉R在哪里寻找外部程序或资源。.Rprofile
:这是一个用来设置用户或项目级别的选项或变量的配置文件,它可以位于用户目录或当前工作目录中,例如C:\Users\username\.Rprofile或D:\project\.Rprofile。这个文件会在每次启动R时最后被读取,它可以用来自定义用户信息或加载特定的包。
修改Rprofile.site
这个文件,在最后一行添加:
options(download.file.method = "wininet")
保存,重新打开Rstudio,查看method:
> getOption("download.file.method")
[1] "wininet"
修改完成。
现在就可以安装GitHub的包包了。
四、安装示例:gwasglue
gwasglue
是一个R程序包,它可以将GWAS
(全基因组关联分析)的数据源连接到R中的各种分析工具,例如用于共定位、精细定位、孟德尔随机化、可视化等的工具。gwasglue的目的是为了方便用户在不同的软件包之间转换和分析GWAS数据,而不需要进行复杂的格式转换或数据处理。
gwasglue目前支持以下数据源和分析工具:
- 数据源:ieugwasr(用于从IEU GWAS数据库中检索GWAS数据)和gwasvcf(用于从VCF文件中读取GWAS数据)。
- 共定位:coloc(用于检测两个或多个表型之间的共同遗传变异)和HEIDI(用于检测异质性)。
- 精细定位:finemapr(用于调用FINEMAP软件进行精细定位)、PAINTOR(用于整合功能注释信息进行精细定位)和CAVIAR(用于计算后验概率进行精细定位)。
- 孟德尔随机化:TwoSampleMR(用于进行双样本孟德尔随机化分析)、MendelianRandomization(用于进行单样本孟德尔随机化分析)、RadialMR(用于进行径向孟德尔随机化分析)和MRPRESSO(用于检测异常值和方向性异质性)。
- 可视化:gassocplot(用于绘制基因组关联图)。
GitHub给你的安装命令是:
devtools::install_github("mrcieu/gwasglue")
现在,安装还会有一些小问题:
第一个是devtools与GitHub之间的连接问题,直接使用devtools,一小时只允许下载文件60
次。安装gwasglue需要几百个依赖包、文件。
报错:
Error: Failed to install ‘unknown package’ from GitHub:
HTTP error 403.
API rate limit exceeded for 113.250.229.180. (But here’s the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)
Rate limit remaining: 0/60
Rate limit reset at: 2023-09-20 17:12:21 UTC
To increase your GitHub API rate limit
- Use usethis::create_github_token()
to create a Personal Access Token.
- Use usethis::edit_r_environ()
and add the token as GITHUB_PAT
.
可以看到次数已经用完了,解决方法也告诉你了,贴心😘
运行:
usethis::create_github_token()
会转到github,引导你创建个人访问令牌,跟着弄就行了:
回到命令行:
usethis::edit_r_environ()
会在编辑区域打开配置文件,添加:
GITHUB_PAT = ghp_08szR5HyYyfsueh48(你的令牌)
现在每个小时应该是有5000次下载次数,随便霍霍。
不过安装gwasglue
还有问题,
报错:
ERROR: dependency ‘gwasvcf’ is not available for package ‘gwasglue’
removing ‘D:/R/R-4.3.1/library/gwasglue’
要先安装gwasvcf
,当你直接安装它,又会提示你需要安装xxxxxxxxxxxxx,套娃~
安装gwasvcf包时,缺少一些生物信息学相关的依赖包。这些依赖包是一些用于处理基因组数据的R包,它们属于Bioconductor
项目。Bioconductor是一个用于分析高通量基因组数据的开源软件项目,它提供了一些专门的R包和工具。
步骤:
-
install.packages("BiocManager") # 安装BiocManager包
-
BiocManager::install(c("BiocGenerics", "Biostrings", "GenomeInfoDb", "GenomicRanges", "IRanges", "Rsamtools", "S4Vectors", "SummarizedExperiment", "VariantAnnotation")) # 安装依赖包
-
在安装gwasvcf包时,使用build_vignettes参数来跳过构建vignettes的步骤。vignettes是一些用于展示R包功能和用法的文档,它们可能需要一些额外的依赖包。如果不需要查看vignettes,使用以下命令来安装gwasvcf包:
-
devtools::install_github("mrcieu/gwasvcf", build_vignettes = FALSE) # 安装gwasvcf包,不构建vignettes
现在再安装就OK了:
devtools::install_github("mrcieu/gwasglue")
注意,安装过程可能会有这个问题:
9: In download.file(url, destfile, method, mode = "wb", ...) :
the 'wininet' method is deprecated for http:// and https:// URLs
mode=“wb”,而url是http,websocket是不支持http链接的(又是考验知识积累的时候了哟),在设置里面允许不安全即可:Tools--Global options...
总结:多看报错信息,当然,需要结合一定的综合知识积累。
把 永 远 爱 你 写 进 诗 的 结 尾 ~
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!