● 向量(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