R语言初学指南(笔记)

R语言的下载地址(Windows版本):http://ftp.ctex.org/mirrors/CRAN/

R语言的安装,需要额外安装mikTex,Rtools,htmlhelp:

R:D:\Program Files\R\R-3.0.3
mikTex:D:\Program Files\MiKTeX 2.7
Rtools:d:\Rtools
htmlhelp:D:\Program Files\htmlhelp

Path需要配置如下:
d:\Rtools\bin;D:\Rtools\gcc-4.6.3\bin;d:\Rtools\MinGW\bin;D:\Program Files\htmlhelp
;D:\Program Files\MiKTeX 2.7\miktex\bin;


Log(2), log10(2)

boxplot(count ~ spray, data = InsectSprays,col="lightgray")

加载包library(MASS)

q(),退出R,但是强烈建议在询问是否保存工作空间时,不要把它保存在默认目录下,如果这样做,当R重新启动时会自动载入所有的结果。

q(save=”no”) R不做保存直接退出。

改变默认工作目录:setwd(file=”c:\\doc\\”)

我们推荐把R代码保存在文本比机器中而不要保存在你的工作空间中。下次使用时,打开编辑好的存档文件,复制代码并把它黏贴到R里。

Extending the linear Models with R

citation("lattice")

R允许在一个变量中存储多个值,这个任务由c()函数来完成,c代表Concatenate

arr = c(22,33,44,55)

arr[1],arr[1:5]

arr[-2]表示查看除了第二个值之外的其他值。

R有很多内置函数:sum,mean,max,min,median,var和sd等等。

R中变量名可以是s.win的形式,”.”也属于变量的一部分。

R中的变量名最好使用大写字母开头,这样可以避免将它和一些内部函数名混淆。

Sum(arr,na.rm=TRUE)将忽略掉数据中的NA项。

Rep(c(1,2,3,4),each=8),重复输入值1-4,每个8次。

Seq(from=1,to=4,by=1)和1:4的效果一样。

Cbind函数将所结合的变量以列的形式输出。

Dim(Z)可以输出Z的维数。

Rbind函数具有

http://www.xplatform.co.kr:8080/edu/xp/employees_select.jsp

W = vector(length=8)

Vector函数的优点是我吗可以事先定义向量的长度,在做循环运算就比较有用。

Dmat = matrix(nrow=8,ncol=4) //生成8*4的矩阵。

as.matrix(cbind(a,b,c,d))可以通过这种方式生成

is.matrix返回是否是矩阵。

对于矩阵A和B专门的操作符还有进行转置运算的t(A),进行矩阵的乘法的A %*% B,求逆矩阵的solve(A)等。

线性代数,n元序列的逆序和对换:

大的数排在小的数前,则成为逆序,一个排列的逆序个数的总和就称为这个排列的逆序数。

排列的逆序为奇数偶数,则称此排列为奇排列偶排列。

定理:一次对换改变排列的奇偶性。奇数次对换改变奇偶性,偶次对换奇偶性不变。

推论2,全体n元排列的集合中,奇排列与偶排列各一半。

行列式与转置行列式相等。

若行列式的第i行(列)的每一个元素都可以表示为两数之和,则行列式可表示成两个行列式之和。

用一个数乘行列式,等于将行列式的某一行(列)元素都乘以K

若对换行列式的任意两行(列),则行列式变号。

推论,若行列式的两行(列)相同,则行列式为零。两行(列)元素成比列,则行列式为零。

把行列式的第j行(列)元素的K倍加到第i行(列)的对应元素上,行列式的值不变。

我们可以使用数据框结合具有相同长度的变量,而数据框的每一行包含有同一样本的不同观察值。这一点上它和matrix或者cbind函数是比较类似的。

Dfrm = data.frame(WC=wingcrd,TS=tarsus,hd=head,w=wt)

移除变量rm(变量)

List函数结合数据。

Lst = list(x1=x1,x2=x2)

List里边的内容通过入Lst$x1,Lst$x2来访问。引入list函数的原因是因为几乎所有R中的函数(比如线性回归,广义线性模型,t-检验等等)的输出结果都是保存在列表中的。

数据的载入:

一般情况下有两种将数据从Excel(或电子数据表、数据框程序)载入R的方法。

第一种方法:将EXCEL数据准备好后,将其提取到制表符分割的Ascii文件中,关闭Excel,使用read.table函数将数据载入到R中。第二种方法是一个专门的R程序包,RODBC,可以访问Excel中选定的行和列。

read.table(file="D:\\R\\user.txt",header=TRUE)

R认为ascii文本文件中的数据实用点作为小数点,事实上,其还有一个属性dec=”.”,如果要使用逗号作为小数点,可以使用dec=”,”。

Scan也可用于导入文件,在数据都是数值的情况下,scan运行更快。

访问或者载入数据库中的数据都是比较简单的,R提供了快速访问任何类型数据库的一些工具:

Library(RODBC)。当驱动程序存在于主系统是,程序包应用标准数据库实施开放式数据库连接ODBC。安装数据库程序包时设置必要地驱动程序是很重要的。

假定已安装了正确的驱动程序,可以使用odbcConnectAccess命令来建立一个与Microsoft Access数据库的连接:

Chanel = odbcConnectAccess(file=”mydb.mdb”,uid=””,pwd=””)

获取表:sqlFetch(channel,”MyTable”);

sqlQuery(channel,querysentense);

Windows用户可以使用odbcConnectExcel直接连接Excel中的电子数据表,并且从任意表单中选择行和列。

Str(结构)命令告诉我们数据框中每个变量的属性。

Names(a)查看载入的数据的header; str(a)查看其结构。

访问数据框中变量最有效的方法如下。确定R中的一个函数,例如,线性回归桉树lm;

也可以使用a$Age方式去访问。

如果我们想使用Age数据集中的某个变量,每次都输入a$时繁琐的。使用attach命令可以避免这样的麻烦。

Attach(a)后就可以直接访问Age变量。

Detach命令与attach命令相反。

Unique(a$sex)可以查看变量sex的变量有多少个唯一值。

1如果表示雄性,要访问所有的雄性数据:

Sel = a$sex == 1 //生成一个向量Sel与变量Sex具有相同的长度

Am = a[Sel,]

&是布尔和运算符。

数据排序:

Ord1 = order(a$age)

A[Ord1,]

R有一个有用的工具能合并文件,即merge函数。

Amerge = merge(a1,a2,by=”Sample”);

All属性如果配置为TRUE,如果sq1里没有sq2里出现的样本数据,将用NAs填充。

输出数据:write.table命令。

write.table(a,file="d:/R/output.txt",sep="",quote=FALSE,append=FALSE,na="NA")

重新编码分类变量:如sex不要1和2,需要F和M表示,可以增加新列:

A$fSex = factor(a$sex)

A$fSex = factor(a$sex,levels=c(1,2), labels=c(“M”,”F”)

boxplot(Age ~ Id, data = a)

M1 = lm(Age ~ Id, data = a)

M2 = lm(Age ~ factor(Id), data = a)

除了命令factor,你也可以使用as.factor。为了把因子转换成数值向量,可以使用as.numeric。这在画图时把雄性和雌性绘制不同的颜色随是很有用的。

R提供了计算单变量、多变量或观察值子集的均值、长度、标准差、最小值、最大值、方差等的函数。

tapply(a$Age,a$arr,mean),Age列根据arr列进行group求mean。

tapply(a$Age,a$arr,sum), Age列根据arr列进行group求sum。

完整的来看,是tapply(X = a$Age, INDEX=a$arr, FUN=mean)

我还可以对其求标准差(sd函数),方差(var函数),长度(length函数)等操作。

Sapply(a[,5:24],FUN=mean)对数据框a的5-24列进行求平均。

需要注意的是tapply函数计算的是一个变量观察值子集的均值,而lapplysapply函数计算的是一个或多个变量全部观察值的均值(或其它函数)

Lappy和sapply的不同,前者输出列表,后者输出向量。

Lapply和sapply中包含数据的变量必须是数据框。如cbind命令的输出不是数据框,可以使用data.frame来使得其变为数据框。注意到这样做我们将丢失变量标签。我们可以在cbind函数结合完数据后再用colnames函数来加上标签。

另一个可以提供变量信息的函数式summary命令,它的参数可以是一个变量,cbind命令的输出,或者数据框。

Table(a$age)用来不同age上的记录的数量。

table(a$sex,a$Age)查看sex,age组合各自的记录的数量。

plot(a$Id,a$Age)

对图形最常见的修改是添加标题和x,y轴标签以及设置x,y轴坐标界限。这个可以通过扩展绘图命令完成:

plot(a$Id,a$Age,xlab="User Id",ylab="User Age", main="Id Age Plot",

+ xlim=c(1000,1100),ylim=c(15,25))

也可以用xlim = c(min(a$Id,na.rm=TRUE),

                    Max(a$Id,na.rm=TRUE))

改变绘图字符:默认使用空心圆作为绘图字符,但其可以从另外20多个符号中选择。Pch选项制定绘图字符,缺省值为1.

改变绘图符号的颜色:col属性 col=3为绿色。

改变绘图符号的尺寸:cex选项

添加一条平滑线:

Plot完成后,使用如下命令:

M.loess = loess(Id ~ Age, data = a)

> Fit = fitted(M.loess)

> lines(a$Age,Fit)

R起码有两个包可以方便获取全球范围内的股票数据:
quantmod
tseries
我更喜欢后者:data_ts<-get.hist.quote(instrument='601398.ss',start='2008-05-10',end='2010-03-20')
quantmod的作图比较猛。

这些包应该也是通过抓取相关网站的HTML/XML分析得出数据的。

 

保存图像JPEG

jpeg(file="D:\\R\\user.jpeg")

>plot(User$Id,User$Age)

>dev.off()

 

可以使用paste命令来连接两个字符串,并且之间不加空格。

Paste(Nest.i,”.jpg”,sep=””)

 

For循环for(I in 1:27){

}

for(iin 1:27){

 print(i)

 }

 

循环矩阵:


nD=dim(User)

nRow= vector(length = nD[1])

for(iin 1:nD[1]){

 nRow[i] = User[i,1]+User[i,3]

 }

在执行统计分析前,查找并处理所有的缺失值是非常重要的,因为它们经常回带来一些困难。某些方法,例如线性回归,将会移除所有包含有缺失值的情形(观察值)。

 

自定义函数:

NAPerVariable<- function(X1){

       D1 = is.na(X1)

       colSums(D1)

}

这时候就可以通过NAPerVariable(User[,])来调用函数了。

colSums(D1)命令的输出结果是每个变量的缺失值个数。而rowSums可以得出每个观察值缺失值的个数。

判断0的个数:

ZerosPerVariable<- function(X1){

       D1 = (X1 == 0)

       colSums(D1,na.rm=TRUE)

}

设定函数参数中变量的默认值,如:

VariableInfo= function(X1, Choice1 = “Zeros”)

 

Print(“Youmade a error”)打印出错误。

 

Ifelse命令可以用来替代if命令:

Ifelse(Choice1== “Zeros”, D1 = (X1==0),D1 = is.na(X1))

 

计算香农指数:

RS= rowSums(Species, na.rm=TRUE)

Pro= Species / RS

H= -rowSums(prop * log10(prop), na.rm = TRUE)

给数据加上标签:

Names(User) = users[,1]

 

图形工具:

饼图,Pie

Par函数:mfrow = c(2,2)生成一个具有4个面板的图形窗口。把c(2,2)改成c(1,4)或者c(4,1)会生成一行(或列)4个饼图。Mar选项制定每个图形周围空白的大小。空白定义为四侧边缘的线的数目,底部、左侧、顶部、右侧。各自的缺省值分别是c(5,4,4,2)+0.1.增加这些值将会出现更多空白。

条形图:barplot

绘画箭头:

Bp= barplot(…

arrows(bp,….)

box()

带形图:stripchart

盒图:boxplot

Text函数和aixs函数。

R函数pairs可以用来生成多面板散点图。

Pie,pie3D,par,barplot,arrows,box,boxplot,text,points.

Legend,title,expression,pairs,coplot

格包:R中提供了很多可以对各种特殊类型数据进行绘图的函数。格包可以使R调动全部的潜能来对各种高维数据进行绘图。

猜你喜欢

转载自blog.csdn.net/wendll/article/details/22651685