從Github上輕鬆安裝R包—githubinstall包--轉載

一、綜述

愈來愈多的R包正在由世界上不一樣的人所建立,其中一部分緣由是devtools包使得開發R包1變得更加簡單。devtools包不只讓開發R包變得簡單,並且用於分發R包。git

當開發者發佈一個R包的時候,CRAN2通常是最經常使用的。使用install.packages()函數能夠安裝發佈在CRAN上的R包。例如,以下方法能夠安裝dplyr包:github

install.packages('dplyr')

devtools包的install_github()函數用於從Github上安裝R包。web

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包的時候你必須準確的記得它的倉庫名稱。ide

麻煩的是,咱們每每很難記住Github的用戶名。開發者在給R包命名的時候通常會考慮包的名稱,以便用戶方便記憶。然而,他們在給本身取一個Github用戶名的時候可能就沒那麼當心了。例如,ggfortify是Github上的一個很是好的包。但它是由誰開發的呢?用戶名是什麼呢?答案是sinhrks4。咱們彷佛很難記住它。函數

githubinstall包提供了一種相似於install.packages()的方式,只需包名便可安裝R包。ui

#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包,並詢問你是否安裝。.net

此外,若是你只是模糊的記得包名也能夠安裝成功,githubinstall包經過模糊的字符串會自動糾正包名。code

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

二、安裝

從CRAN上安裝githubinstallorm

install.packages('githubinstall')

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

三、詳細資料

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()
相關文章
相關標籤/搜索