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

最新文章

  1. 自己动手写计算器v1.1
  2. linux red hat 给普通用户开启root权限
  3. (二)catalina.bat
  4. HTTP 格式
  5. 微软发布Windows 10:连Windows 7都能免费升级了
  6. 【BZOJ1013】【JSOI2008】球形空间产生器sphere(高斯消元)
  7. Bzoj 2038: [2009国家集训队]小Z的袜子(hose) 莫队,分块,暴力
  8. c笔试题(1)
  9. xm学习笔记
  10. knockout+echarts
  11. Flex控件初始化问题
  12. 关于解决“No matching provisioning profiles found”问题-ios
  13. Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017)ABCD
  14. 洛谷P1446 [HNOI2008]Cards
  15. ROS机器人程序设计(原书第2版)学习镜像分享及使用说明
  16. 服务器后台代码生成TreeView的json字符串
  17. URL 传递问题
  18. Android 音视频深入 十一 FFmpeg和AudioTrack播放声音(附源码下载)
  19. linux 3
  20. spring-mvc源码阅读笔记

热门文章

  1. django中使用redis
  2. C++继承模型
  3. nodejs获取参数的方法
  4. spring MVC学习(一)---前端控制器
  5. HDU1087:Super Jumping! Jumping! Jumping!(简单dp)
  6. 网站实时信息采集和统计graphite
  7. 2.MySQL简介
  8. 001-navicat for oracle 12 破解安装
  9. HDU 3081 Marriage Match II (二分+并查集+最大流)
  10. rz时提示command not found