R语言中,你最常用的软件包有哪些,请简述功能及特点?

Python013

R语言中,你最常用的软件包有哪些,请简述功能及特点?,第1张

作者:任坤

链接:http://www.zhihu.com/question/21792740/answer/27104765

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

reshape2 横向、纵向做数据变换,例如把纵向堆叠在数据库中的证券行情数据转换成一个按照不同证券代码横向排列,按照时间纵向排列收盘价的数据表

stringr 方便地用正则表达式做批量字符串操作,可做检测、匹配、替换、计数等等

lubridate 方便地做日期/时间操作,各种标准化时间和时区的处理

plyr 轻松地在vector, list, data.frame之间做分组变换,实现拆分、变换、合并的操作

dplyr 轻松地处理data.frame, data.table以及多种数据库为基础的数据,实现选择、变换、分组等等,速度很快

RODBC 连接ODBC数据库接口

RSQLite 连接轻量级SQLite数据库连接

jsonlite 读写json文件

yaml 读写yaml文件,实现灵活的程序外部配置

Rcpp, Rcpp11 写C++03/11代码直接编译后给R调用,大幅提升算法性能

data.table 快速处理较大数据表

ggplot2 高级绘图,一套统一的语法实现复杂图像组合绘制

zoo 时间序列数据的预处理,比如滚动平均等等

rmarkdown 用Markdown写文档并可方便地运行R代码与绘图

knitr 自动文档生成

devtools 扩展包开发必备,在线安装托管的扩展包,检查扩展包是否符合CRAN标准等等

testthat 扩展包自动测试

pipeR 自己写的高性能、低损耗、分工明确的管道操作(pipeline operator)扩展包,使得数据变换流程化

=== 专业领域(数值计算) ===

rootSolve 非线性方程求根、ODE均衡状态解

Rsolnp 非线性优化

=== 专业领域(计量和统计学习) ===

sde 随机微分方程模拟和统计推断

KernSmooth 非参数平滑与分布估计

cpm Change Point Detection 实时分布或者统计关系变化检测

stats4 可用来方便地做MLE估计

1、通过选择菜单:

程序包->安装程序包->在弹出的对话框中,选择你要安装的包,然后确定。

2、使用命令

install.packages(package_name,dir)

package_name:是指定要安装的包名,请注意大小写。

dir:包安装的路径。默认情况下是安装在..\library 文件夹中的。可以通过本参数来进行修改,来选择安装的文件夹。

3、本地来安装

如果你已经下载的相应的包的压缩文件,则可以在本地来进行安装。请注意在windows、unix、macOS操作系统下安装文件的后缀名是不一样的:

1)linux环境编译运行:tar.gz文件

2)windows 环境编译运行 :.zip文件

3)MacOSg环境编译运行:.tgz文件

注:包安装好后,并不可以直接使用,如果在使用包中相关的函数,必须每次使用前包加载到内存中。通过library(package_name)来完成。 包安装后,如果要使用包的功能。必须先把包加载到内存中(默认情况下,R启动后默认加载基本包),加载包命令:

Library(“包名”)

Require(“包名”) 1、查看包帮忙

library(help=package_name)

主要内容包括:例如:包名、作者、版本、更新时间、功能描述、开源协议、存储位置、主要的函数

help(package = package_name)

主要内容包括:包的内置所有函数,是更为详细的帮助文档

2、查看当前环境哪些包加载

find.package() 或者 .path.package()

3、移除包出内存

detach()

4、把其它包的数据加载到内存中

data(dsname, package=package_name)

5、查看这个包里的包有数据

data( package=package_name)

6、列出所有安装的包

library()

有点复杂啊。。。这么短讲不清楚。。。我写的仅供参考,以R官网的说法为准。

一般先点右上角新建一个project(一般是new directory),类型是package,其他设置看自己喜好啦。然后要填写DESCRIPTION,比如作者、概述、包的版本、license、依赖哪些包、建议同时装哪些包……函数如果都是用R语言写的话(没有用C/C++/Fortran/……来实现部分功能),就把.R文件都放到R目录底下。帮助文档(就是可以用help(function)调出来的文档)我比较建议用roxygen2包来做,直接在.R文件里按照特定的格式写文档(去这个包的网站看一下格式),然后在包的目录底下在R里运行roxygen2::roxygenize(),就直接把文档写到man目录下了,顺便NAMESPACE也一块儿自动写了,之后要改文档的话重新运行就行了。

其他方面:vignnettes之类的文档去网上找吧(考虑一下用好一点的搜索引擎o(╯□╰)o),这方面有一大堆东西可以写,当然也可以不写。还可以在包里自带数据集:把数据放在data目录下,关于数据的文档也可以在.R文件里写然后roxygenize。如果要用其他语言实现部分功能的话,去R的官网看怎么弄吧,我没用过这么高级的功能o(╯□╰)o。我还看到网上说有个叫packrat的东西可以用,好像是把依赖的包一起打包进新的包里。我没用过。

全部写好之后最好测试一下,比如在自己电脑里装上这个包试试,还可以在cmd/shell里运行R CMD check path/to/package/directory自动测试这个包(貌似windows系统下要装Rtools还要调一下系统的路径才能这么用,自己找一下吧)。

总之不是一篇回答就能说清楚的o(╯□╰)o,我自己也是花了好长时间在网上搜才把之前的包搞定的。

另外,作为一个project,可以考虑用一些版本控制的软件来帮忙,比如git、svn。用git的话可以直接放到github上面,别人就可以直接用devtools包里的函数装啦~如果想传到CRAN或者Bioconductor的话,对包的功能、稳定性、文档等的要求会比较高,我从没想过弄这些。