● 向量(X)
● 赋值
assign(向量名, X)。
向量名<- X
X ->向量名
● 运算
加(+),减(-),乘(*),除(/),整除(%/%),求余数(%%)
exp(),log,cos,tan,sqrt…
最大值:max(X)
最小值:min(X)
范围:range(X)
求和:sum(X)
连乘积(阶乘):prod(X)
个数:length(X)
中位数:media(X)
均价:mean(X)
方差:var(X)
标准差:sd(X)
排序:sort(X)
● 序列的生成
从a开始到b结束逐项+(-)1的序列:a:b
等间隔函数:seq(from=value1,to=value2,by=value3)
重复函数:rep(X,times)
● 逻辑向量
真:TRUE(T) | 假:FALSE(F)
运算符:<,<=,>,>=,==(等于),!=(不等于)
● 缺失数据
NA
判断缺失值:is.na(X)
检测是否不确定:is.nan(X),T:不确定,F:确定
检测是否有限:is.finite(X),T有限,F无限
检测是否无穷:is.infinite(X),T无穷,F有限
● 字符型向量
字符串连接:paste(X,Y)
● 复数向量
生成复数:complex()
● 对象
是否为数值:is.numeric(X)
是否为字符:is.character(X)
类型转换:as.character(X),as.numeric(X)
改变长度:length(X)<-新长度。用空值填充或去掉多的
返回对象的属性:attributes(object)
存取对象的属性:attr(object,”属性名”)
● 因子
把一个向量编码为一个因子:factor()
因子的水平(感觉像是不同的值):levels()
各类数据的频数:table()
分组运算函数(F(x) group by INDEX):tapply(X,INDEX,FUN=F)
产生因子:gl(水平数,重复次数,长度,因子水平,有序标识)
● 数组和矩阵(M)
定义或获取数组的维度:dim(M)<-c(行,列)。
直接构造多维数组:array(data,dim,dimnames)。例:X<-array(1:20,dim=c(4,5))
构造矩阵:matrix(data,nrow,ncol,byrow,dimnames)。例:X<-matrix(1:20,nrow=4,ncol=5,byrow=FALSE)
矩阵的转置:t(M)。如:A<-matrix(1:6,nrow=2);A;t(A);
方阵行列式的值:det()。例:det(matrix(1:4,ncol=2))
矩阵的行数:nrow(M)
矩阵的列数:ncol(M)
矩阵的合并:横向拼cbind();纵向拼:rbind()
矩阵的拉直(把矩阵变向量):as.vector()。例:A<-matrix(1:6,nrow=2); A;as.vector(A);
数组的维名字:dimnames(M)<-list(c(..),c(….))。例:X<-matrix(1:6,ncol=2,byrow=T);dimnames(X)<-list(c("one","two","three"),c("First","Second"));X;
数据的行|列名访问:rownames(M) | colnames(M)。
对某维或者若干维进行某种运算:apply(M,某维,FUN)。例:A<-matrix(1:6,nrow=2);apply(A,1,sum)
● 列表(L)
构造:list()。例如:Lst<-list(name="davy",wife="taotao",no.children=3,child.age=c(4,7,9));Lst; Lst[[2]]; Lst[["child.age"]];Lst[[4]][2];Lst$name;
● 数据框
构造数据框:data.frame()。
转换为数据框:as.data.frame()
数据框去属性:attach()
数据框加属性:detach()
● 读写数据文件
读表格形式的文件:read.table("fileName"[,header=T|F,][sep,][quote]...)
读纯数据的文件:scan()
读SPSS文件:read.spss()
读Excel文件:read.delim()
读CSV文件:read.csv()
写数据:write()
写表格数据:write.table(); write.csv()
● 读取数据库操作通过ODBC:
1.创建链接:conn<-odbcConnect("ODBCname",uid,pwd)
2.查询数据:sqlQuery(conn,"SQL")
3.关闭链接:odbcClose(conn)
● 控制流
分支:if(condition){}/else if(condition){} /else{}
循环:for(name in expr_1){ expr_2} | while(condition){expr} | repeat { expr;break }
中止语句:break
空语句:next