R(三): R包原理及安装
包(package)是多个函数的集合,常作为分享代码的基本单元,代码封装成包可以方便其他用户使用。越来越多的R包正在由世界上不同的人所创建并分发,这些分发的R包,可以从CRAN 或 github 上获取,由于向 CRAN 提交包审核非常严格,有些开发者并没有将自己开发的R包提至CRAN的意向,通过 devtools 可以轻松从 github上下载安装。包的生命周期一般会经历 source、bundled、binary、installed和in-memory五个阶段。参考资料 (http://r-pkgs.had.co.nz/intro.html)
目录:
- R包基本内容
- R的不同形式
- R包相关命令
R包基本内容:
包中包含的内容按重要程序递减顺序包含以下几个部分,(红色表示一个包中必须包含的元素)
- R代码(R/):位于R/文件夹,放置R代码文件,只有这一个目录的文件夹也是有用的包
- 包的元信息(DESCRIPTION):包描述文件,文件中一般还包含该包的功能说明、使用权限等
- 文档(man/):介绍如何使用该包
- Vignettes(Vignettes/):描述包中每个函数细节的文档,展示了包中各部分配合使用解决具体问题
- 测试集(tests/):确保包按设计工作,testthat包可将已完成的交互式测试转换为正式的自动化测试
- 命名空间(Namespace):定义该包的哪些函数可供其它包使用,以及需要哪些包的其它函数
- 外部数据(data/):data/目录为包提供数据,可以供R用户方便的使用,或者为文档提供令人信服的例子
- 其它部分:demo/、exec/、po/和tools/等
不同形式的R包: (参考 http://r-pkgs.had.co.nz/package.html)
- source包 : 开发时的源代码包,包含R/、DESCRIPTION等
- bundled包:将source包reduced成一个单个文件(.tar), 使用gzip(.gz)压缩成一个.tar.gz文件的包(在linux常看到的包名后缀),它和source包的区别在于:
- Vignettes被编译成了HTML和PDF文件
- 没有了source包中的临时文件 (source包中.Rbuildignore文件中标明的文件被排除在bundled包外)
- binary包:binary包可供没有编译环境的R用户使用,它也是单个文件,但是解压开和source包差别很大 (注意:binary包和平台相关,Mac的包.tgz和Windows的.zip不能通用)
- R/文件夹中并没有R文件,而是3个解析后可供高效调用的文件,这是加载R代码用save()函数保存的结果
- Meta/文件夹包含一些rd文件,这些是包相关的元数据缓存,可以用readRDS()查看文件内容,这些文件加速了包的加载
- html/文件夹包含了HTML帮助需要的文件
- src/目录变成libs/目录,包含了将源代码编译成的库
- inst/的内容被移到了顶层目录
- installed包:installed包是将binary包解压(安装)到特定的库目录,如下图展示了包的不同安装方法

- memory包:使用包之前,必须先加载到内存, 可使用library() 和 require() , 其中调用 library()函数时,如果包不存在,程序会中止并报错。调用requrie() 函数,当包不存在时,调给出警告,程序继续向后执行。
- 当包加载到内存后,使用包时不需要用包名,比如:用install() 而不用 devtools::install(),如图

- 小结:
- 从网上下载的R的包(package)通常有两种:binary package 和 Source package
- binary package:这种包属于即得即用型(ready-to-use),但是依赖与平台,即Win和Linux平台下不同
- Source package: 此类包可以跨平台使用,但用之前需要处理或者编译(compiled)
- 不同平台对应的不同的后缀名,分别为:
- linux环境编译运行:tar.gz文件
- windows 环境编译运行 :.zip文件
- MacOSg环境编译运行:.tgz文件
包相关命令:
- install.packages(): 连网时,在线安装发布在CRAN上的包。 如:install.packages("ape")
- install.packages(your.zip.files, repos=NULL): 安装下载到本地的R包
- .libPaths(): 查看包的安装目录
- installed.packages():查看已安装包信息
- .packages(all.available = TRUE):查看已安装包信息
- library(mypackage):载入mypackage包
- getOption("defaultPackages"):查看启动R时自动载入的包
- search():查看当前载入的包
- sessionInfo():查看R中载入的包
- Sys.getenv("R_HOME"):查询R HOME安装地址
- Sys.getenv("HOME"):查询用户HOME地址
- remove.packages("mypackage"):卸载package
- detach("package:demo"): 删除当前session内存中已加载的包
- update.packages( ):更新包
github程序包安装:
- 依赖 devtools 工具, 安装命令: install.packages("devtools")
- devtools包的install_github()函数用于从Github下载并在本地安装R包,安装示例代码如下:
library(devtools)
install_github('badbye/baidumap') 示例中发现:install.packages()和install_github()函数所需的参数是不同的。install.packages()只需包名即可,而install_github()需要提供Github的仓库名。这意味着当你想从Github上安装一个R包的时候你必须准确的记得它的仓库名称, 麻烦的是,我们往往很难记住Github的用户名
- githubinstall包提供了一种类似于install.packages()的方式,只需包名即可从github上安装R包,已发布至CRAN,安装命令如下:
install.packages("githubinstall") 当再安装github上的包时,示例代码如下:
library(githubinstall)
githubinstall("baidumap")
R(三): R包原理及安装的更多相关文章
- R+NLP︱text2vec包——四类文本挖掘相似性指标 RWMD、cosine、Jaccard 、Euclidean (三,相似距离)
要学的东西太多,无笔记不能学~~ 欢迎关注公众号,一起分享学习笔记,记录每一颗"贝壳"~ --------------------------- 在之前的开篇提到了text2vec ...
- Ubuntu安装R及R包
安装R $sudo apt-get update $sudo apt-get install r-base $sudo apt-get install r-base-dev 安装一些可能的依赖包 $s ...
- 安装R语言的包的方法
安装R语言的包的方法: 1. 在线安装 在R的控制台,输入类似install.packages("TSA") # 安装 TSA install.packages("TS ...
- R 之 rJava 包安装错误的解决方案
前几天在Ubuntu上安装R中的xlsx包时一直卡在了rJava包的安装上,最终各种google都没能解决问题.直到最后,我回到了安装rJava时的错误记录....我用血的教训证明,错误日志是很重要很 ...
- conda清华源 pip 清华源ubuntu 清华镜像 R代理以及包的安装
vim ~/.condarc channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/ - https:// ...
- 安装R的h5包
系统 redhat7 安装H5的包, 依赖系统hdf5包,如下安装完, 发现版本不一致, sudo yum install hdf5-devel 解决办法: 移花接木 sudo ln -s /opt/ ...
- Linux环境下R和R包安装及其管理
前言 R对windows使用很友好,对Linux来说充满了敌意.小数据可以在windows下交互操作,效果很好很棒.可是当我们要处理大数据,或者要在集群上搭建pipeline时,不得不面对在Linux ...
- 轻松创建R语言函数包
讲真,用R这么几年,始终未尝试过写自己的包,看来这就是我与真正程序员的差距了——编程习惯等于没有. 昨天一个偶然的机会想开始写自己的工具包,发现了前期教程的有一些过时.于是,写一个**windows* ...
- R语言-Knitr包的详细使用说明
R语言-Knitr包的详细使用说明 by 扬眉剑 来自数盟[总舵] 群:321311420 1.相关资料 1:自动化报告-谢益辉 https://github.com/yihui/r-ninja/bl ...
随机推荐
- convert转化成特定日期格式
CONVERT() 函数可以用不同的格式显示日期/时间数据. CONVERT(data_type(length),data_to_be_converted,style) 例子: CONVERT(VAR ...
- csdn第八名
编号:1028时间:2016年7月18日11:49:17功能:csdn第八名URL :http://blog.csdn.net/21aspnet
- poj 1475 uva 589 - Pushing Boxes
题目大意 人推箱子从起点到终点,要求推箱子的次数最少,并打印出来人移动的路径. 题目分析 对于箱子进行宽搜的同时,要兼顾人是否能够把箱子推到相应的位置 每一次对箱子bfs 然后对人再bfs #incl ...
- (转)ubuntu 14.04下安装hadoop2.6(伪分布式)
安装: http://pingax.com/install-hadoop2-6-0-on-ubuntu/ 写的非常好(国外人比较实在,他说的单机实际上是伪分布式...). 另外要注意的是,如果对新 ...
- 骑士问题(knight) (BFS)
题目描述 在一个标准8×8的国际象棋棋盘上,棋盘中有些格子可能是有障碍物的.已知骑士的初始位置和目标位置,你的任务是计算出骑士最少需要多少步可以从初始位置到达目标位置.有障碍物的格子当然不可以到达. ...
- POJ-2152 Fire (树形DP)
题目大意:在一棵树中选出一些点,选每个点的代价为w(i),并且对于点 i ,在距离它lim(i)之内必须选一个点,使它作为 i 的依赖点.求最小代价. 题目分析:定义状态dp(u,k)表示使u为根节点 ...
- HTML文件结构
转载(http://jingyan.baidu.com/article/75ab0bcbf04a75d6864db2fd.html) HTML文件结构 HTML文件均以<html>标记开始 ...
- C++实现水波纹、火焰和血浆效果
点击这里查看原文 Code Project着火了! 整个工程有三个类,它们可以让你在图象上添加一些很酷的效果. 我把这些文件都放到我的代码压缩包里面了,并且做了一个小工程来让一些人使用起来更方便,但是 ...
- PHP递归题目
$arr = [ 'a' => 'A', 'b' => 'B', 'c' => [ 'd'=> 'D', 'e'=>[ 'f'=>'F', 'g'=>['h' ...
- c++关于接口机制和不完全类型的小问题
都和typedef有关 一个是接口机制时用到的 就是所有用到接口的源文件只需包含简单的接口声明 接口的具体实现在其他源文件中实现 接口可以是 //interface.h typedef struct ...