您的位置:首页 > 其它

R(三): R包原理及安装

2016-08-15 22:51 66 查看
包(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")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: