首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

【R语言】完美解决devtools安装GitHub包失败的问题(以gwasglue为例)

  • 25-04-25 07:21
  • 2763
  • 13715
blog.csdn.net
  • Rstudio,R4.3.1,命令在Rstudio的命令行即console中运行。

文章目录

  • 一、问题复述
  • 二、分析
  • 三、解决
  • 四、安装示例:gwasglue

一、问题复述

使用devtools安装一个github的包。

devtools:

devtools 是 R 语言中一个非常有用的包,它提供了一套工具和函数,用于开发、测试和维护 R 包,devtools 可以帮助 R 包的开发人员更轻松地进行包的创建、文档编写、测试和发布等任务。 devtools 的一些主要功能和用途:

  1. 创建新的 R 包: devtools 提供了一个函数 create(),可以用于创建新的 R 包的框架,包括必要的目录结构和文件。

  2. 加载和安装包: devtools 提供了 load_all() 函数,它可以加载包的最新版本到 R 会话中,使开发者可以更快速地测试和调试包的功能。此外,install() 函数可以用于安装包。

  3. 文档编写: devtools 提供了 document() 函数,用于自动生成包的文档,包括 Roxygen2 风格的注释,这些注释可以用于生成包的帮助文档。

  4. 测试: devtools 通过 test() 函数支持包的测试,开发者可以编写测试用例来确保包的功能正常工作。这有助于减少错误和提高包的质量。

  5. 检查和验证包: devtools 提供了 check() 函数,它可以运行 R CMD check 命令,用于检查包是否符合 CRAN(Comprehensive R Archive Network)的要求,以便发布到 CRAN 上。

  6. 发布和分享包: 一旦开发者完成了包的开发和测试,devtools 提供了 release() 函数,用于将包发布到 CRAN 或其他 R 包仓库。

  7. 包的依赖管理: devtools 还支持包的依赖关系管理,可以帮助开发者管理包的依赖关系,确保包在不同环境中的兼容性。

安装devtools,和安装其他包一样的:

install.packages("devtools")
  • 1

使用devtools安装GitHub的包:

devtools::install_github("mrcieu/gwasglue")
  • 1

报错:

在这里插入图片描述

二、分析

首先看报错信息,这是解决编程问题最基本的步骤。

我先看的时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")
  • 1

输出的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") 
  • 1

不过这是暂时的,下一次打开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")
  • 1

在这里插入图片描述

保存,重新打开Rstudio,查看method:

> getOption("download.file.method")
[1] "wininet"
  • 1
  • 2

修改完成。


现在就可以安装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()
  • 1

会转到github,引导你创建个人访问令牌,跟着弄就行了:
在这里插入图片描述

回到命令行:

usethis::edit_r_environ()
  • 1

会在编辑区域打开配置文件,添加:

GITHUB_PAT = ghp_08szR5HyYyfsueh48(你的令牌)
  • 1

在这里插入图片描述


现在每个小时应该是有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")
  • 1

在这里插入图片描述

注意,安装过程可能会有这个问题:

9: In download.file(url, destfile, method, mode = "wb", ...) :
  the 'wininet' method is deprecated for http:// and https:// URLs
  • 1
  • 2

mode=“wb”,而url是http,websocket是不支持http链接的(又是考验知识积累的时候了哟),在设置里面允许不安全即可:Tools--Global options...

在这里插入图片描述


总结:多看报错信息,当然,需要结合一定的综合知识积累。



把 永 远 爱 你 写 进 诗 的 结 尾 ~

走廊灯关上
微信公众号
资源获取,问题交流。
注:本文转载自blog.csdn.net的感谢地心引力的文章"https://blog.csdn.net/weixin_43764974/article/details/133110323"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

126
软件工程
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top