您好,欢迎访问三七文档
1.1R的两种运行方式交互模式:可以理解为用户输入,操作也在前台完成。举一例子:mean(abs(rnorm(100)))#按正态分布取100个随机变量,求其绝对值的均值[1]0.8821137#注:每次运算结果是不一样的#[1]代表输出的第一项,每行最多六项。批处理模式:操作程序在后台完成。举一例子:pdf(“d:\\xh.pdf”)#保存文件在d盘hist(rnorm(100))#绘制直方图dev.off()#关闭“图形设备”,使文件写入磁盘。1.2R会话基本用法用数字生成数据集:x-c(1,2,,4)#c表示连接,-为赋值运算符;表示把向量(1,2,4)赋值给X。向量的元素用[]来访问x[3][1]4提取子集的方式类似x[2:3][1]24R中有很多内置数据集,可以用下面的方法取出并进行其他操作。data()mean(Nile);sd(Nile);hist(Nile)#计算尼罗河流量均值、标准差,并绘制直方图。[1]919.35[1]169.2275直接关掉或调用q()都可以退出R,本次变量保存与否取决于退出时的回答1.3函数函数是R语言编程的核心。以一个求向量中奇数个数的(把第四行稍加改动就可以变成求其他各种需要的函数)函数为例。oddcount-function(x){+k-0+for(ninx){+if(n%%2==1)k-k+1+}+return(k)+}oddcount(c(1,3,5))[1]3形参实参作用域就不多说了。R语言默认参数这样定义:g-function(x,y=2,z=T){...}#有歧义时TURE和FALSE不能在缩写为首字母调用时,可以使用默认值,也可以用新值覆盖。g(12,z=FALSE)#x=12,y=2,z=FALSE1.4R语言中的数据结构向量:可以是字符模式(用mode函数调用可显示向量模式),也可以是数值模式,但不可以混合。字符串:字符模式的单元素向量。有些函数可以把字符串连接或拆开(如paste和strsplit)u=paste(abc,de)u[1]abcdev=strsplit(u,)v[[1]][1]abcdev=strsplit(u)错误于as.character(split):缺少'split'v=strsplit(u,,)v[[1]][1]abcdev=strsplit(u,)v[[1]][1]abcde矩阵:矩形的数值数组,有行列属性的向量。可以由向量拼接,也可以直接定义。m-rbind(c(1,3),c(2,4))m[,1][,2][1,]13[2,]24m-matrix(c(1,2,3,4),nrow=2)#注意,R中矩阵是一列一列输出的。m[,1][,2][1,]13[2,]24可以从矩阵中提取子矩阵,方法和向量类似。注意:下标从1开始。列表:更广义的向量,各项可以混合不同数据类型。列表元素可以分别访问。具体语法如下:x-list(u=2,v=abc)x$u[1]2$v[1]abcx$u[1]2当统计函数产生复杂的结果时,列表特别有用,它能包容各种信息。列表中的信息可以用print函数或structure函数打印到屏幕上。数据框:通常通过读取文件或数据库创建,也可以用data.frame创建。注:数据框的创建和子集的读取语法都比较严格。data.frame(list(kids=c(jack,jill),ages=c(12,10)))kidsages1jack122jill10data$ages错误于data$ages:类别为'closure'的对象不可以取子集data.frame$ages错误于data.frame$ages:类别为'closure'的对象不可以取子集ddata.frame(list(kids=c(jack,jill),ages=c(12,10)))d$ages[1]1210data.frame(list(kids=c(jack,jill),ages=c(12,10)))$ages[1]1210类:有类名的列表。本身可以看做特殊的数据类型。在泛型函数编程中应用1.5一个实例:读取文件并进行各种操作:a-read.csv(d:\\R相关东西\\xdd.csv,header=TRUE)class(a)[1]data.framehead(a)年龄身高112122223323442455256626l-lm(a[,2]~a[,1])#用线性方程拟合attributes(l)#列出l的所有组件$names[1]coefficientsresidualseffectsrank[5]fitted.valuesassignqrdf.residual[9]xlevelscalltermsmodel$class[1]lm可以通过美元符号输出系数:l$coef但如果打印l,则会按类的对象输出。调用summary则会生成回归模型的摘要。summary(l)Call:lm(formula=a[,2]~a[,1])Residuals:Min1QMedian3QMax-5.519e-15-2.921e-162.476e-163.662e-164.231e-15Coefficients:EstimateStd.ErrortvaluePr(|t|)(Intercept)2.000e+011.065e-151.878e+162e-16***a[,1]1.000e+001.172e-168.536e+152e-16***---Signif.codes:0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1…….1.6获取帮助在线帮助的语法为help(seq)startinghttpdhelpserver...Done或者?seq特殊字符要用引号同事,R还提供了example()函数来提供例子代码。example(seq)seqseq(0,1,length.out=11)[1]0.00.10.20.30.40.50.60.70.80.91.0……R还支持更自由的搜索:help.search(multivariatenormal)MASS::mvrnorm#函数mvrnorm在包MASS中SimulatefromaMultivariateNormalDistribution获取整个函数信息语法如下MASS::mvrnorm图中加线应根据纵坐标x-c(1,2,3)y-c(2,3,8)a-plot(x,y)aNULLlines(a)lines(y)setwd(“c://”)jpeg(file=“myplot.jpeg”)plot(1:10)rect(1,5,3,7,col=“white”)dev.off()png格式也可以png(file=myplot.png,bg=transparent)dev.off()
本文标题:R语言_第一章
链接地址:https://www.777doc.com/doc-3703962 .html