R入门

阅读更多

 

从大学开始接触eviews,虽然是商业软件,但是小巧易用,所以一直忽视作为开源的R。现在的项目已经离不开开源的支持了,所以还是得深入了解一下R,以下的文字大多为读《R for beginners》的随记。

 

 

基础

ls()显示内存中的对象

rm()删除内存中对象,rm(list=ls())删除全部

?lm显示帮助

help(lm)帮助

getwd()获取当前工作目录

setwd("C:/data")改变工作目录

从外部文件中读取数据

mydata<-read.table("test.data"), 返回的是一个数据框

scan()返回一个数值型向量

read.fwf()用于读取固定宽度格式的数据

存储数据

write(变量,"file.txt")

 

R Java API

R本身没有提供Java的API,有一个开源项目rJava在做这个工作,http://www.rforge.net/rJava/

 

3.4 产生序列:

x <- 1:30

seq(1,5,0.5) 递增数字

seq(length=9,from=1,to=2)

rep(1,30) 重复数字

sequence(5:4)

sequence(c(10,5))

sequence的规律看结果

gl() 生成不同水平/层次数据

gl(3,5,label=c("高","中","低"))

expand.grid()创建一个数据框

expand.grid(h=c(60,80),w=c(100,300),sex=c("M","F"))

 

3.5.1数据结构:

向量(Vector),同Java的Vector类似,用 x <- numeric(3)这种形式创建一个vector,之后通过x[1] <-3 来修改。还可以放logical(),character()。向量包含两个参数:mode类型,length长度

因子(Factor),不仅包括分类变量本身还包括变量不同的可能水平。

创建因子:factor(1:3,levels=1:5),factor(1:3,lables="a","b","c"),factor(1:5, exclude=4)

levels(ff)提取水平。 level水平做何解释?

 

矩阵

实际上是有一个附加属性维数dim的向量。

创建矩阵:

 matrix(1:6,2,3)

另一种方法:

x<-1:15

dim(x)<-c(5,3)

x已经变成了矩阵

 

数据框(Data Frame)

可以由read.table间接创建,也可以用函数data.frame创建

x<-1:4 ; M<-c(10,35)

df<-data.frame(x,M)

 

列表list

x<-1:4,y<-c(10,35)

list(x,y) 两个序列

 

时间序列(time-series)

ts(1:10,start=1999)

ts(1:10,start=1999,frequency=12)

ts(1:10,start=1999,frequency=12,start=c(2001,3))

 

表达式expression

eval()对表达式求值

有些函数可以以表达式作为参数,如D()求偏导数函数

D(exp1,"x")表示对x求偏导

 

3.5.2类型转换

as.numeric,as.logical,as.character

 

3.5.3运算符

== 分单个比较,整体比较实用identical和all.equal

x<-1:3;y<-1:3

x==y

identical(x,y);all.equal(x,y)

all.equal比较近似相等,identical完全相等

 

3.5.4下标系统

下标可以是向量

x<-1:5

从矩阵取值、设置使用下标时别忘了逗号

x<-matrix(1:6,3,2)

x[,2]<-c(11,12,13)

x[,1]默认返回的是向量,x[,1,drop=FALSE]返回的是一个3行1列矩阵

下标为负数表示不显示某个位置的值,如x[1]表示不显示矩阵1行1列那个值,x[-1,]表示不显示第1行

对于向量、矩阵和数组,下标还可以是比较运算表达式

如x[x>=5] <-20,将把矩阵中>=5的值替换成20

下标还可以是logical类型的FALSE或TRUE,TRUE则显示,FALSE则不显示

 

3.5.5对象的名称

names,colnames,rownames,dimnames

 

3.5.6数据编辑器

data.entry(x)

 

3.5.7常用函数和数学运算

c()连接对象

手工输入序列 x <- c(1,2,3)

 

向量可以进行常规的算术运算

x<-1:4;y<-rep(1,4)

z<-x+y

不同长度的向量也能相加,最短的向量将被循环使用。

 

3.5.8矩阵计算

rbind()上下合并矩阵

cbind()左右合并矩阵

x<-matrx(1,2,2);y<-matrix(2,2,2)

x %*% y 矩阵乘积

t(x)矩阵转置

diag()获取矩阵的对角元,设置矩阵的对角元,产生对角矩阵

diag(c(10,20,30),3)

solve()矩阵的逆

qr()分解矩阵

eigen()计算特征值和特征向量

svd()奇异值分解

 

R绘图

首先也要加载绘图设备,在Windows系统下用x11(),windows(),pdf()等加载

关闭设置dev.off()

设备列表:dev.list()

 

两种绘图函数:

高级绘图函数high-level plotting functions 创建一种新图形

低级绘图函数low-level plotting functions 在现存图形上添加元素

绘图参数graphical parameters控制绘图选项

 

layout() 等间隔分配子窗口

layout.show(4)显示4四格

 

绘图参数在绘图之前先设定好。

pch符号:pch(plotting character),用0:25表示26个标识

plot(),以坐标轴画图

plot(x,y,type),

type有

"p" for points, 

"l" for lines, 

"b" for both, 

"c" for the lines part alone of "b", 

"o" for both ‘overplotted’, 

"h" for ‘histogram’ like (or ‘high-density’) vertical lines, 

"s" for stair steps, 

"S" for other steps, see ‘Details’ below, 

"n" for no plotting

如何做密度曲线

常用办法:做出x的一个序列,然后做出dfunction(x),fuction指各种概率分布。如

x=seq(-3,3,0.05)

plot(x,dnorm(x),type="l")

lines(x,dt(x,1))

 

 

R的统计分析

需要严重补充

 

 

R编程

 

一般将程序保存为.R后缀文件,如果有语法错误则在运行时会指出哪行有错误。

可以通过source("test.R")来运行

在R运行界面中如果输入{ 则R一直等待 }的出现才结束本条语句

 

在R中显式的运行循环( for in,while等)效率是很低的,所以尽可能通过其他方式来避免显式循环,可选的方式有:

逻辑索引向量替代,如y[x%%2==0] <- 0

apply(), 如 apply(X,2,mean), 第二个参数1表示对行操作,2表示对列操作,这里表示对矩阵的列做均值计算。

lapply()用于对list对象进行操作

sapply() 更为灵活的一个apply,可以接受向量或者矩阵作为主要参数

 

自定义函数

myfunc <- function(arg1,arg2...) {

}

定义好了函数之后,可以通过source("myfunc.R")来加载,或者在启动R的时候加载,需要在.RData中定义,或者在.Rprofile中定义

 

 

 

你可能感兴趣的:(C,C++,C#,数据结构,编程)