包(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包基本内容:


  • 包中包含的内容按重要程序递减顺序包含以下几个部分,(红色表示一个包中必须包含的元素)

    1. R代码(R/):位于R/文件夹,放置R代码文件,只有这一个目录的文件夹也是有用的包
    2. 包的元信息(DESCRIPTION):包描述文件,文件中一般还包含该包的功能说明、使用权限等
    3. 文档(man/):介绍如何使用该包
    4. Vignettes(Vignettes/):描述包中每个函数细节的文档,展示了包中各部分配合使用解决具体问题
    5. 测试集(tests/):确保包按设计工作,testthat包可将已完成的交互式测试转换为正式的自动化测试
    6. 命名空间(Namespace):定义该包的哪些函数可供其它包使用,以及需要哪些包的其它函数
    7. 外部数据(data/):data/目录为包提供数据,可以供R用户方便的使用,或者为文档提供令人信服的例子
    8. 其它部分: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包的区别在于:
    1. Vignettes被编译成了HTML和PDF文件
    2. 没有了source包中的临时文件 (source包中.Rbuildignore文件中标明的文件被排除在bundled包外)
  • binary包:binary包可供没有编译环境的R用户使用,它也是单个文件,但是解压开和source包差别很大 (注意:binary包和平台相关,Mac的包.tgz和Windows的.zip不能通用)
    1. R/文件夹中并没有R文件,而是3个解析后可供高效调用的文件,这是加载R代码用save()函数保存的结果
    2. Meta/文件夹包含一些rd文件,这些是包相关的元数据缓存,可以用readRDS()查看文件内容,这些文件加速了包的加载
    3. html/文件夹包含了HTML帮助需要的文件
    4. src/目录变成libs/目录,包含了将源代码编译成的库
    5. inst/的内容被移到了顶层目录
  • installed包:installed包是将binary包解压(安装)到特定的库目录,如下图展示了包的不同安装方法
  • memory包:使用包之前,必须先加载到内存, 可使用library() 和 require() , 其中调用 library()函数时,如果包不存在,程序会中止并报错。调用requrie() 函数,当包不存在时,调给出警告,程序继续向后执行。
  • 当包加载到内存后,使用包时不需要用包名,比如:用install() 而不用 devtools::install(),如图
  • 小结:
    1. 从网上下载的R的包(package)通常有两种:binary package 和 Source package
    2. binary package:这种包属于即得即用型(ready-to-use),但是依赖与平台,即Win和Linux平台下不同
    3. Source package: 此类包可以跨平台使用,但用之前需要处理或者编译(compiled)
    4. 不同平台对应的不同的后缀名,分别为:
  • 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")

最新文章

  1. 前端学HTTP之连接管理
  2. JAVA09异常处理之动手动脑问题
  3. npm(cnpm)介绍
  4. 《JavaScript DOM编程艺术》读后总结
  5. Thinkphp 学习笔记
  6. ARM寻址方式,王明学learn
  7. 使用Go开发一个简单的服务器程序
  8. mysql慢查询Slow Query Log和未使用索引(Not Using Indexes)查询配置和使用
  9. 初识CoreText
  10. Qt标准对话框之QColorDialog
  11. 搜索提示時jquery的focusout和click事件沖突問題完美解决
  12. 【原】win7下调整分区
  13. Lowest Common Ancestor of a Binary Tree, with Parent Pointer
  14. 苹果手表的真实触感信息(Real Touch Messaging)
  15. 【转】10个重要的Linux ps命令实战
  16. bzoj:1221;vijos 1552 软件开发
  17. leetCode(66)-Excel Sheet Column Title
  18. [转帖]流程控制:for 循环
  19. 接口自动化测试持续集成--Soapui接口功能测试数据传递
  20. python numpy 科学计算通用函数汇总

热门文章

  1. 第一次进div1了
  2. JavaScript数据结构——集合、字典和散列表
  3. 【题解】【BT】【Leetcode】Binary Tree Level Order Traversal
  4. Qt之动画框架
  5. hexo系列教程
  6. 简单插入排序(C++版)
  7. 创建交互式shell脚本对话框
  8. linux 安装redis
  9. Chorme dev tools小技巧
  10. leetcode 37 Sudoku Solver java