资源描述:
《统计建模与R语言mathth》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、R的语法与数据结构语法符号>命令或运算提示符+续行符基本算术运算+加号-减号*乘号/除号^乘方赋值符=或<-10/4/20211求助符?help()例子:>3+5>3-5>3/5>3^5>x=5>?plot>help(plot)10/4/20212向量向量是R中最为基本的类型一个向量中元素的类型必须相同,包括数值型整型单精度实型双精度实型逻辑型复值型字符型10/4/20213建立向量的方法(函数)seq()或:若向量(序列)具有较为简单的规律rep()若向量(序列)具有较为复杂的规律c()若向量(序列
2、)没有什么规律例子:>1:10>seq(1,10,by=0.5)>seq(1,10,length=21)>rep(2:5,2)>rep(2:5,rep(2,4))>x=c(42,7,64,9)>length(x)10/4/20214向量运算中的循环法则(recyclingrule)>1:2+1:4>1:4+1:710/4/20215向量的下标(index)与向量子集(元素)的提取正的下标提取向量中对应的元素负的下标去掉向量中对应的元素逻辑运算提出向量中元素的值满足条件的元素注:R中向量的下标从1开始,
3、这与通常的统计或数学软件一致而象C语言等计算机高级语言的向量下标则从0开始!例子:>x=c(42,7,64,9)>x[1]>x[-2]>x[c(1,4)]10/4/20216>x>10#值大于10的元素逻辑值[1]TRUEFALSETRUEFALSE>x[x>10]#值大于10的元素[1]4264>x[x<40&x>10]>#产生(0,1)上100个均匀分布随机数>y=runif(100,min=0,max=1)>sum(y<0.5)#值小于0.5的元素的个数[1]47>sum(y[y<0.5])#值
4、小于0.5的元素的值的和[1]10.8476710/4/20217数据框架(dataframe)许多数据集是数据框架的形式出现一个数据框架就是将许多向量组合起来的一个对象,它是二维的,通常其列表示变量,其行表示观测。建立数据框架的方法(函数)若你的数据本身保存在一个文件中,则可以使用read.table()仅接受带有分界符的ASCII数据如果数据是电子报表的形式,则采用下面的两种变型read.csv()先将数据另存为带逗号的数据(CommaSeperatedvalues)read.delim()先将数
5、据另存为用tab作为分界符的数据注:若数据集很大(如1,000,000观测x200变量),则可由ODBC联接由数据库读入.10/4/20218若你在R中建立了一些向量并试图想由它们生成框架,则可以使用data.frame(),但需要同时cbind().例子:>x=c(42,7,64,9)>y=1:4>z.df=data.frame(cbind(INDEX=y,VALUE=x))>z.dfINDEXVALUE11422273364449注.df只是为了提醒自己z.df是一个数据框架INDEX和VAL
6、UE是重新命名的向量名字10/4/20219数据框架子集的提出取格式foo[row,column]其中foo数据框架的名称row需要提出取的行号column需要提出取的行号例子(续上一例)>z.df[1,]#提取第一个观测(第一行)INDEXVALUE1142>z.df[,1]#提取第一列(第一个变量的值)[1]1234>z.df[2,1]#提取第二行第一列的元素[1]210/4/202110列表(list)复杂的数据分析时,仅有向量与数据框架还不够有时需要生成包含不同类型的对象R的列表(list)就
7、是包含任何类型的对象例子:>foo=list(x=1:6,y=matrix(1:4,nrow=2))>foo$x[1]123456$y[,1][,2][1,]13[2,]2410/4/202111列表子集的提出取提取一个子对象如foo的x,下面三种方式等价>foo$x>foo[1]>foo[[1]]例子>foo$y>foo[2]>foo[[2]]>foo[[1]][2]>foo$y[2]>foo$y[4]10/4/202112条件语句作用:避免除零或负数的对数等数学问题形式1:if(条件)表达式1e
8、lse表达式2形式2–常优于形式1!ifelse(条件,yes,no)试比较下面的三个结果:>x=c(6:-4)>sqrt(ifelse(x>=0,x,NA))>ifelse(x>=0,sqrt(x),NA)>if(x>=0)sqrt(x)elseNA10/4/202113循环(loops)for()#若知道终止条件for(变量in向量)表达式while()#若无法知道运行次数while(条件)表达式两者通常可以转换例1—试比较两种方法>for(iin1