R 3.0.0 (代号 “Masked Marvel”)已经释出,R 正式进入了 3.x 时代。

R语言与其说是编程语言不如说是处理数据,分析数据的一种可视化工具,或者说是R是一种统计分析和计算的环境!

基本

R 3.0.0 带来了约 100
项的新特性,长向量的全面支持和若干项性能提升。长向量(Long
Vectors)理论上至多可存储 2^52 个元素,已经远超 CPU
和操作系统地址空间限制。更多说明和代码迁移注意事项可以参考 ?LongVectors .
考虑到向量在 R 中的基础地位,这将给未来 R 对更大规模数据的支撑铺平道路。

R语言优势:相对来SAS不需要复杂编程,不需要去编写统计算法,编写算法简直是在浪费生命!

一、数据管理

vector:向量 numeric:数值型向量 logical:逻辑型向量
character;字符型向量 list:列表 data.frame:数据框
c:连接为向量或列表 sequence:等差序列 rep:重复
length:求长度 subset:求子集 seq,from:to, NA:缺失值 NULL:空对象
sort,order,unique,rev:排序 unlist:展平列表
attr,attributes:对象属性
mode,typeof:对象存储模式与类型 names:对象的名字属性

另一项值得注意的重要变化是,程序包的 vignette 编译目前已经向 Sweave
以外的引擎开放,即正式引入了 knitr 支持!详情可参看最新版本的 Writing R
Extensions 以及 tools::vignetteEngine 。

1.数据类型

* 数值型【numeric】

*字符型【character】

*逻辑型【logical】

*复数型【complex】

*原型【raw】ps:以二进制形式保存

*默认值【missing value】

图片 1

二、字符串处理

character:字符型向量 nchar:字符数 substr:取子串
format,formatC:把对象用格式转换为字符串 paste,strsplit:连接或拆分
charmatch,pmatch:字符串匹配 grep,sub,gsub:模式匹配与替换

考虑到长向量特性比较重要,完整翻译了官方公告中的两个重点章节:

数据对象:

1.向量

在之前先说一个seq()函数

x<-seq(1, 10, by=1)

x<-seq(1, 10, 1)

//生成一个递增序列【数组】 基数是1 ,末数是10,等差为1

注意事项:下标不是从0开始,而是从1开始。

1.1 向量赋值:

x<-c(1,2,3,4,5)    # 用c()函数赋值【c 是create
首字母】参数有很多个。

注意事项:

1.向量所赋的值必须是相同的数据类型。

2.对于字符向量,函数
paste()【粘贴的意思】,可以把单个的字符连成一个字符串,长度不相同时,较短的向量会被重复使用

3,可以利用assign()函数对向量赋值

w<-c(1,2,3,4,5)= assign(“w”,c(1,2,3,4,5))

1.2 向量运算

遵循数学运算法则

ps:%/%表示整数除法【取整】      %%【取余】

向量运算·会对该向量的每一元素进行相同的运算,出现在同一个表达式的向量,最好是同一长度,如果长度不一,则,较短的向量表达式将被重复使用,表达式的值将和最长的向量等长的向量

1.3 向量的常见函数

length(x)//检测向量x得元素个数

mode(x)//向量x的数据类型

range(x)//向量x范围

which.mix(x)// 向量x中的最小元素下标

sort(x)//对向量x正序列排序

rev(x)// 向量反方向排列

prod(x)向量x中元素得积

match(x)匹配

*******append()//添加函数

x<-c(1.6.7.8.9.10)

append(x, 2:5,1)

结果:1,2,3,4,5,6,7,8,9,10

1.3 向量索引

图片 2

通过下标索引

索引类似C语言中的一维数组中的下标,不同的是这里从1开始索引

2.矩阵 【二维数组】

2.1.生成矩阵的函数matrix()

matrix (data,nrow=行数 ,ncol=列数,byrow=F/T,dimnames= ”  行和列的名称
“)

byrow项控制排列元素是否按行进行,默认byrow=F

2.2.矩阵转置 t() 函数

   存在矩阵A 转置矩阵t(A)

2.3矩阵运算

  遵循矩阵运算法则

2.4矩阵常用的函数

crossprod(A)//取矩阵的对角元素,从左上到右下

Slove(A)矩阵求逆

eigen (A) 求矩阵的特征值和特征向量得运算

det(A)求矩阵的行列式

三、复数

complex,Re,Im,Mod,Arg,Conj:复数函数

用户可见的显著变动:

四、因子

factor:因子 codes:因子的编码 levels:因子的各水平的名字
nlevels:因子的水平个数 cut:把数值型对象分区间转换为因子
table:交叉频数表 split:按因子分组
aggregate:计算各数据子集的概括统计量 tapply:对“不规则”数组应用函数

  • 对于此版本的 R (3.0.0),所有包都需要重新安装。
  • 对长度为 2^31 以上向量的全面支持(仅限 64-bit 系统,32-bit
    系统将会报错)
  • 64-bit 版本的 R 可分配内存的大小仅受系统的限制。可通过系统工具(如
    bash shell 下的 ulimit )来设置单个 R
    进程的整体内存占用,尤其是在多用户环境下。有若干包需要 4GB
    以上的虚拟内存来加载。
  • 64-bit Windows 版本的 R
    可用内存大小默认限制为已安装内存的大小。该值可通过启动参数 –max-mem-size 或环境变量 R_MAX_MEM_SIZE 设置。
  • 使用负数表示颜色值的方式已被全面废弃,统一抛出错误。

数学

* *
长向量支持:

一、计算

+, -, *, /, ^, %%, %/%:四则运算
ceiling,floor,round,signif,trunc,zapsmall:舍入
max,min,pmax,pmin:最大最小值
range:最大值和最小值 sum,prod:向量元素和,积
cumsum,cumprod,cummax,cummin:累加、累乘 sort:排序 approx和approx
fun:插值 diff:差分 sign:符号函数

以下内容仅适用于 64-bit 系统:

二、数学函数

abs,sqrt:绝对值,平方根 log, exp, log10, log2:对数与指数函数
sin,cos,tan,asin,acos,atan,atan2:三角函数
sinh,cosh,tanh,asinh,acosh,atanh:双曲函数
beta,lbeta,gamma,lgamma,digamma,trigamma,tetragamma,pentagamma,choose
,lchoose:与贝塔函数、伽玛函数、组合数有关的特殊函数
fft,mvfft,convolve:富利叶变换及卷积 polyroot:多项式求根
poly:正交多项式 spline,splinefun:样条差值
besselI,besselK,besselJ,besselY,gammaCody:Bessel函数
deriv:简单表达式的符号微分或算法微分

  • 全面支持多于 2^31 – 1
    个元素的向量。适用于原始型、逻辑型、整数型、双精度型、复数型和字符型向量,对列表同理(列表是特殊的向量)。(字符向量的每一元素大小限制仍为
    2^31 – 1 bytes)
  • 对向量的多数操作可无缝应用于长向量,对于尚不支持的操作,可能会返回错误
    ‘long vectors not supported yet’
    多数是因为它们明确依赖于整数型下标(如 anyDuplicated() 和 match() )或是因为超过了其他的限制(如字符串或矩阵的维度)或
    相应的操作速度可能会极其缓慢。
  • 对长向量使用 length() 将返回一个双精度值,且长度属性可以通过使用一个双精度值和赋值语句设置为
    2^31 或更多。
  • 下标索引的多数功能都可正常使用。总的来说,双精度值下标可用于访问超出
    2^31 -1 的元素。
  • 目前对于每维少于 2^31
    个元素而总元素个数大于此值的矩阵和数组已经有部分支持。仅有某些矩阵代数的操作支持这样的矩阵,而且通常会花费很长时间。对于其余操作,尚不支持的原因
    可能是底层的 Fortran
    代码有着某种未被声明的限制(如已在复数型 svd() 中发现的那样)。
  • dist() 可计算得到大于 65536 行的距离对象
    (但是像 hclust() 一样的函数尚不能处理这样的对象)。
  • 对原始型向量进行 serialize() 不受向量大小的限制(除了受硬件资源所限)。
  • C 函数 R_alloc 现在可以分配 2^35 bytes 或更多内存。
  • agrep() 和 grep() 将针对输入的长向量返回双精度型的下标。
  • 为了支持长向量,许多 .C() 调用都被替换为 .Call() 调用(已经替换或将替换)。遗憾的是有若干包复制了非正式
    API 的 .C() 调用,因此会编译失败。
  • .C() 和 .Fortran() 尚不支持长向量的输入。这是一个预警机制,因为现有代码基本不太可能是可以处理长向量的实现(同时
    R 的封装也通常假设 length(x) 是一个整数)。
  • sort() 中的多数方法都已支持长向量。
  • rank(), sort.list() 和 order() 已支持长向量 (除了 radix sorting
    会比较缓慢)。
  • sample() 可对长向量做均匀抽样。

三、数组

array:建立数组 matrix:生成矩阵 data.matrix:把数据框转换为数值型矩阵
lower.tri:矩阵的下三角部分 mat.or.vec:生成矩阵或向量 t:矩阵转置
cbind:把列合并为矩阵 rbind:把行合并为矩阵
diag:矩阵对角元素向量或生成对角矩阵 aperm:数组转置 nrow,
ncol:计算数组的行数和列数 dim:对象的维向量
dimnames:对象的维名 row/colnames:行名或列名 %*%:矩阵乘法
crossprod:矩阵交叉乘积(内积) outer:数组外积
kronecker:数组的Kronecker积
apply:对数组的某些维应用函数 tapply:对“不规则”数组应用函数
sweep:计算数组的概括统计量 aggregate:计算数据子集的概括统计量
scale:矩阵标准化
matplot:对矩阵各列绘图 cor:相关阵或协差阵 Contrast:对照矩阵
row:矩阵的行下标集 col:求列下标集

* *

四、线性代数

solve:解线性方程组或求逆 eigen:矩阵的特征值分解 svd:矩阵的奇异值分解
backsolve:解上三角或下三角方程组 chol:Choleski分解
qr:矩阵的QR分解 chol2inv:由Choleski分解求逆

发布公告

五、逻辑运算

<,>,<=,>=,==,!=:比较运算符
!,&,&&,|,||,xor():逻辑运算符 logical:生成逻辑向量
all,any:逻辑向量都为真或存在真
ifelse():二者择一 match,%in%:查找 unique:找出互不相同的元素
which:找到真值下标集合 duplicated:找到重复元素

下载地址(源码包)

六、优化及求根

optimize,uniroot,polyroot:一维优化与求根

程序设计

 

一、控制结构

if,else,ifelse,switch:分支 for,while,repeat,break,next:循环
apply,lapply,sapply,tapply,sweep:替代循环的函数。

本文转载自:

二、函数

function:函数定义 source:调用文件 call:函数调用
.C,.Fortran:调用C或者Fortran子程序的动态链接库。 Recall:递归调用
browser,debug,trace,traceback:程序调试 options:指定系统参数
missing:判断虚参是否有对应实参 nargs:参数个数 stop:终止函数执行
on.exit:指定退出时执行 eval,expression:表达式计算
system.time:表达式计算计时 invisible:使变量不显示
menu:选择菜单(字符列表菜单)
其它与函数有关的还有:delay,delete.response,deparse,do.call,dput,environment
,,formals,format.info,interactive,
is.finite,is.function,is.language,is.recursive
,match.arg,match.call,match.fun,model.extract,name,parse,substitute,sys.parent
,warning,machine

三、输入输出

cat,print:显示对象 sink:输出转向到指定文件
dump,save,dput,write:输出对象 scan,read.table,load,dget:读入

四、工作环境

ls,objects:显示对象列表 rm, remove:删除对象 q,quit:退出系统
.First,.Last:初始运行函数与退出运行函数。
options:系统选项 ?,help,help.start,apropos:帮助功能
data:列出数据集分析

统计

一、统计分布

每一种分布有四个函数:d――density(密度函数),p――分布函数,q――分位数函数,r――随机数函数。
比如,正态分布的这四个函数为dnorm,pnorm,qnorm,rnorm。下面我们列出各分布后缀,前面加前缀d、p、q或r就构成函数名:
norm:正态,t:t分布,f:F分布,chisq:卡方(包括非中心)
unif:均匀,exp:指数,weibull:威布尔,gamma:伽玛,beta:贝塔
lnorm:对数正态,logis:逻辑分布,cauchy:柯西,
binom:二项分布,geom:几何分布,hyper:超几何,nbinom:负二项,pois:泊松
signrank:符号秩,
wilcox:秩和,tukey:学生化极差

二、简单统计量

sum, mean, var, sd, min, max, range, median,
IQR(四分位间距)等为统计量,sort,order,rank与排序有关,其它还有ave,fivenum,mad,quantile,stem等。

三、统计检验

R中已实现的有chisq.test,prop.test,t.test。

四、多元分析

cor,cov.wt,var:协方差阵及相关阵计算
biplot,biplot.princomp:多元数据biplot图 cancor:典则相关
princomp:主成分分析 hclust:谱系聚类
kmeans:k-均值聚类 cmdscale:经典多维标度
其它有dist,mahalanobis,cov.rob。

五、时间序列

ts:时间序列对象 diff:计算差分 time:时间序列的采样时间 window:时间窗

六、统计模型

lm,glm,aov:线性模型、广义线性模型、方差