打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
「Debug R」为什么我的R包下载速度令人发指的慢?

今天帮一个学员处理R包安装问题,报错信息如下:

错误信息表明,这个是错是因为无法打开URL造成。我原本以为这个问题和R包安装函数'install.packages'函数详解 一样,是因为下载协议导致。但是当我用TeamViewer远程协助时,却发现他用的是服务器,那么就可以直接排除一开始想到的问题。

当然用命令行进行安装时,发现R包的下载地址并非是国内的镜像站点,而是R的官方站点。那么我基本上可以判定这个安装问题是由于没有选择国内镜像站点造成。

于是我熟练的用 vim~/.Rprofile增加了如下内容, 用于在R启动的时候设置镜像。

  1. #bioconductor

  2. options(BioC_mirror='https://mirrors.ustc.edu.cn/bioc/')

  3. #cran

  4. options('repos' = c(CRAN='https://mirrors.tuna.tsinghua.edu.cn/CRAN/',

  5.    CRANextra = 'http://www.stats.ox.ac.uk/pub/RWin'))

当我重新运行 install.packages的时候,却发现依旧是从官方的站点下载。由于我知道 install.packages的repos选项会用 getOption('repos')确定镜像站点,所以我检查下设置

那么问题来了,为什么我明明设置了 ~/.Rprofile中的repos, 但是还是用的原来的网址呢?

原因就是,这个R是学员自己通过 apt-get安装而成,这个时候R的配置文件放在 /etc/R下,你如果用 ls-l查看时,会发现和直接编译的结果有一些差别。你可以研究下图,找找哪里不一样。

答案就是,他多出了'Renvrion.site' 和 'Rprofile.site'两个文件,用于更改全局性的配置。其中'Rprofile.site'和R启动时的环境配置有关。内容如下:

这里面的 local函数顾名思义就是创建了一个局部变量,也就是默认创建一个新的空环境,在这里面定义的函数不会外部访问。可以发现,系统默认将CRAN定义为官方镜像,尽管从理论上,R会先读取 Rprofile.site,然后读取 ~/Rprofile, 后来的会覆盖前者,但诡异的是我新建的 ~/.Rprofile没有顺利覆盖。不过这不影响我解决问题,我只要修改其中的站点就行了。

最后问题顺利解决。

还有一件事情,和主题无关,但是也很重要。当你从3.4.x 升级到3.5.x时,因为Renvrion中设置了R包的存放位置(如下图),那么新R版本的R会读取老版本的R包,因此会出现不兼容问题。所以你需要检查下图中 R_LIBS_SITE中所示的文件夹,删除里面内容,避免不兼容导致的报错。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
R语言 | R包安装大法
R选择国内镜像安装程序包
R:bioconductor安装、修改镜像及go基因富集分析
R语言 | 第一讲:R包的安装与使用
set default CRAN mirror permanent in R
更改centos 源
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服