美文网首页R语言知识干货数据-R语言-图表-决策-Linux-Python
[转载][R]从Github上轻松安装R包—githubinst

[转载][R]从Github上轻松安装R包—githubinst

作者: 郑宝童 | 来源:发表于2018-10-31 20:30 被阅读343次

    转载自链接http://www.xueqing.tv/cms/article/223

    1、综述

    越来越多的R包正在由世界上不同的人所创建,其中一部分原因是devtools包使得开发R包1变得更加简单。devtools包不仅让开发R包变得简单,而且用于分发R包。

    当开发者发布一个R包的时候,CRAN2一般是最常用的。使用install.packages()函数可以安装发布在CRAN上的R包。例如,如下方法可以安装dplyr包:

    install.packages('dplyr')
    

    devtools包的install_github()函数用于从Github上安装R包。

    library(devtools)
    install_github('hadlley/dplyr')
    

    因此,开发者可以分发正在Github上开发的R包。此外,有些开发者并没有将自己开发的R包提至CRAN的意向。例如,Twitter,Inc在Github上提供的AnomalyDetection包。这时我们可以通过devtools包轻松的安装该R包:

    library(devtools)
    install_github("twitter/AnomalyDetection")
    

    install.packages()install_github()函数所需的参数是不同的。install.packages()只需包名即可,而install_github()需要提供Github的仓库名。这意味着当你想从Github上安装一个R包的时候你必须准确的记得它的仓库名称。

    麻烦的是,我们往往很难记住Github的用户名。开发者在给R包命名的时候一般会考虑包的名称,以便用户方便记忆。然而,他们在给自己取一个Github用户名的时候可能就没那么小心了。例如,ggfortify是Github上的一个非常好的包。但它是由谁开发的呢?用户名是什么呢?答案是sinhrks4。我们似乎很难记住它。

    githubinstall包提供了一种类似于install.packages()的方式,只需包名即可安装R包。

    #install.packages('githubinstall') #已发布至CRAN
    library(githubinstall)
    githubinstall('AnomalyDetection')
    
    Suggetion:
     - twitter/AnomalyDetection
    Do you install the package? 
    
    1: Yes (Install)
    2: No (Cancel)
    

    githubinstall()会从Github的仓库中搜索相应的R包,并询问你是否安装。

    此外,如果你只是模糊的记得包名也可以安装成功,githubinstall包通过模糊的字符串会自动纠正包名。

    githubinstall("AnomaryDetection")
    githubinstall("AnomalyDetect")
    githubinstall("anomaly-detection")
    

    2、安装

    从CRAN上安装githubinstall

    install.packages('githubinstall')
    

    githubinstall包的源代码在Github上可见https://github.com/hoxo-m/githubinstall

    3、详细资料

    githubinstall包提供了若干有用的函数:

    • githubinstall 或者 gb_install_packages()
    • gh_suggest()
    • gh-suggest_username()
    • gh-list_packages()
    • gh_search_packages()
    • gh_show_source()
    • gh_update_package_list()

    这些函数都有相同的前缀gh。githubinstall()gh_install_packages()的别名。

    在演示这些函数的用法之前,我们先加载下githubinstall

    library(githubinstall)
    

    3.1 从Github上安装R包

    给出包名即可,如果只是模糊的记得包名也没关系。

    githubinstall("AnomalyDetection")
    
    Suggestion:
     - twitter/AnomalyDetection
    Do you install the package? 
    
    1: Yes (Install)
    2: No (Cancel)
    
    Selection: 
    

    输入"1",按回车即可开始安装R包。建议安装的R包是通过Github上的R包列表给出的。该列表由Gepuro Task Views提供。

    如果有多个候选项,输入相应的数字即可。

    githubinstall("cats")
    
    Select one repository or, hit 0 to cancel. 
    
    1: amurali2/cats      cats
    2: danielwilhelm/cats No description or website provided.
    3: hilaryparker/cats  An R package for cat-related functions #rcatladies
    4: lolibear/cats      No description or website provided.
    5: rafalszota/cats    No description or website provided.
    6: tahir275/cats      ff
    
    Selection: 
    

    3.2 给出建议的仓库

    githubinstall()会提示你安装建议的R包,但我们可能只想知道都有哪些建议。

    gh_suggest()以向量的形式返回建议的仓库名。

    gh_suggest("AnomalyDetection")
    
    ## [1] "twitter/AnomalyDetection"
    
    gh_suggest("cats")
    
    ## [1] "amurali2/cats"       "danielwilhelm/cats"  "davidluizrusso/cats"
    ## [4] "hilaryparker/cats"   "lolibear/cats"       "rafalszota/cats"    
    ## [7] "tahir275/cats"
    

    此外,如果你只是模糊的记得Github用户名的时候,gh-suggest_username()函数非常有用。

    gh_suggest_username('hadly')
    
    ## [1] "hadley"
    
    gh_suggest_username("yuhui")
    
    ## [1] "yihui"
    

    3.3 列出R包

    gh_list_packages()函数以数据框的形式返回Github上R包的仓库名列表。例如,你想知道谢大大(谢益辉,统计之都创始人)都开发了哪些R包,运行如下:

    yihuiverse <- gh_list_packages(username = "yihui")
    head(yihuiverse)
    
    ##  username package_name                                                                    title
    ## 1    yihui          MSG                            Modern Statistical Graphics (my Chinese book)
    ## 2    yihui   Rd2roxygen                                      Convert Rd to roxygen documentation
    ## 3    yihui    animation A gallery of animations in statistics and utilities to create animations
    ## 4    yihui     crandalf            Check all reverse dependencies of your R package on Travis CI
    ## 5    yihui      formatR                                              Format R Code Automatically
    ## 6    yihui          fun                                                            Use R for Fun
    

    通过返回的结果,我们可以安装谢大大开发的所有R包。

    repos <- with(yihuiyverse, paste(username, package_name, sep="/"))
    githubinstall(repos) 
    

    3.4 通过关键词搜索R包

    gh_search_packages()函数返回Github上所有标题包含给定关键词的R包。例如,搜索所有包含lasso关键词的R包,运行如下:

    gh_search_packages('lasso')
    
    ##           username     package_name                                  title
    ## 1  ChingChuan-Chen             milr  multiple-instance logistic regressi..
    ## 2       YaohuiZeng         biglasso  Big Lasso: Extending Lasso Model Fi..
    ## 3      huayingfang          CCLasso  CCLasso: Correlation Inference for ..
    ## 4         mlampros FeatureSelection  Feature Selection in R using glmnet..
    ## 5             pnnl        glmnetLRC  Lasso and Elastic-Net Logistic Regr..
    ## 6       statsmaths         genlasso  Path algorithm for generalized lass..
    ## 7       vincent-dk         logitsgl  Fit Logistic Regression with Multi-..
    ## 8       vincent-dk             lsgl  Linear Multiple Output Using Sparse..
    ## 9       vincent-dk             msgl  High Dimensional Multiclass Classif..
    ## 10      vstanislas             GGEE  R Package for the Group Lasso Gene-..
    ## 11          zdk123       BatchStARS  R package for Stability Approach to..
    ## 12          zdk123           pulsar  R package for Stability Approach to..
    

    3.5 显示Github上给定R函数的源代码

    gh_show_source()会在Github上查找指定R函数的源代码,并在默认浏览器中显示。

    gh_show_source("mutate", "dplyr")
    

    如果加载了该函数所属的R包,直接输入函数名即可。

    library(dplyr)
    gh_show_source(mutate)
    

    该函数在Safari浏览器上可能有问题。

    3.6 更新R包列表

    githubinstall包通过Gepuro Task Views获取Github上的R包列表。Gepuro Task Views每天都会爬取Github并更新信息。不过,你可能一直以来都是通过R界面来更新R包。gh_update_list()更新R包的方法如下:

    gh_update_package_list()
    

    相关文章

      网友评论

        本文标题:[转载][R]从Github上轻松安装R包—githubinst

        本文链接:https://www.haomeiwen.com/subject/tljgtqtx.html