1. 程式人生 > >從Github上輕松安裝R包—githubinstall包--轉載

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

posit function ota feature 所有 one 命名 mil travis ci

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()

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