一、查看已安裝包app
.packages(all.available=T)
二、all()和any()函數ide
all()和any()函數分別報告其參數是否至少有一個或所有爲TRUE。函數
> x<-1:10 > any(x>8) [1] TRUE > any(x>88) [1] FALSE > all(x>88) [1] FALSE > all(x>0) [1] TRUE
三、篩選函數subset()ui
> x<-c(6,1:3,NA,12) > x [1] 6 1 2 3 NA 12 > x[x>5] [1] 6 NA 12 > subset(x,x>5) [1] 6 12
subset函數與普通篩選方法的區別在於NA值的處理上。code
四、選擇函數which()utf-8
which函數用於提取知足必定條件元素的位置:element
> z<-c(5,2,-3,8) > which(z*z>8) [1] 1 3 4
五、向量化的ifelse()函數string
基本形式:ifelse(b,u,v)。其中b是一個布爾向量,而u和v是向量。it
> x<-1:10 > y<-ifelse(x%%2==0,5,12) > y [1] 12 5 12 5 12 5 12 5 12 5
六、測量向量相等io
> x<-1:3 > y<-c(1,3,4) > x==y [1] TRUE FALSE FALSE #"=="是向量化函數,會應用到每個元素。 > all(x==y) [1] FALSE > identical(x,y) [1] FALSE > x<-1:2 > y<-c(1,2) > identical(x,y) [1] FALSE #符號":"產生的是整數,而c()產生的是浮點數。
七、更改向量的名稱
> x<-c(1,3,4) > names(x)<-c("a","b","c") > x a b c 1 3 4 > names(x)<-NULL #把向量元素名稱賦值爲NULL,能夠將其移除 > x [1] 1 3 4
八、NA值處理
> x<-c(88,NA,12,168,13) > mean(x) [1] NA > mean(x,na.rm=T) [1] 70.25
九、建立數據框
> kids<-c("jack","jill") > ages<-c(12,10) > d<-data.frame(kids,ages,stringsAsFactors=F) #若是沒有給定參數stringsAsFactors的值,R會將向量轉換爲因子(factor)。 > d kids ages 1 jack 12 2 jill 10
十、其它矩陣式操做
> exam.1<-c(2.0,3.3,4.0,2.3,2.3,3.3) > exam.2<-c(3.3,2.0,4.0,0.0,1.0,3.7) > quiz<-c(4.0,3.7,4.0,3.3,3.3,4.0) > examquiz<-data.frame(exam.1,exam.2,quiz) > head(examquiz,n=3) exam.1 exam.2 quiz 1 2.0 3.3 4.0 2 3.3 2.0 3.7 3 4.0 4.0 4.0 > examquiz[2:3,] exam.1 exam.2 quiz 2 3.3 2 3.7 3 4.0 4 4.0 > examquiz[2:3,2] [1] 2 4 > examquiz[2:3,2,drop=F] #設定參數drop=F,能夠獲得一個一列數據框 exam.2 2 2 3 4 > data<-examquiz[examquiz$exam.1>=4,] #提取第一列數據不低於4的子數據框 #examquiz[examquiz$exam.1>=4,]做用等同於subset(examquiz,exam.1>=4) > data exam.1 exam.2 quiz 3 4 4 4
十一、rbing()和cbind()函數
> d kids ages 1 jack 12 2 jill 10 > rbind(d,list("laura",19)) #用rbind()建立新行的時候,添加的行一般是數據框或列表的形式 kids ages 1 jack 12 2 jill 10 3 laura 19 > d$one<-1 #利用循環補齊,能夠向數據框添加長度不一樣的列 > d kids ages one 1 jack 12 1 2 jill 10 1
十二、合併數據框
> kids<-c("jack","jill","jilllian","john") > states<-c("CA","MA","MA","HI") > d1<-data.frame(kids,states,stringsAsFactors=F) > d1 kids states 1 jack CA 2 jill MA 3 jilllian MA 4 john HI > ages<-c(10,7,12) > kids<-c("jill","lillian","jack") > d2<-data.frame(ages,kids,stringsAsFactors=F) > d2 ages kids 1 10 jill 2 7 lillian 3 12 jack > d<-merge(d1,d2) #兩個數據框有一個或多個同名的列能夠用merge(x,y)進行合併 > d kids states ages 1 jack CA 12 2 jill MA 10 > ages<-c(12,10,7) > pals<-c("jack","jill","lillian") > d3<-data.frame(ages,pals) > d3 ages pals 1 12 jack 2 10 jill 3 7 lillian > merge(d1,d3,by.x="kids",by.y="pals") kids states ages 1 jack CA 12 2 jill MA 10 #函數merge()有兩個參數by.x和by.y,用於標出兩個數據框裏含有相同信息但名稱不一樣的兩個變量
1三、tapply函數
調用tapply(x,f,g)函數須要向量x、因子或因子列表f以及函數g。tapply函數執行的操做是:(暫時)將x分組,每組對應一個因子水平,獲得x的子向量,而後對這些子向量應用函數g()。
> ages<-c(25,26,55,37,21,42) > affils<-c("R","D","D","R","U","D") > tapply(ages,affils,mean) D R U 41 31 21 > d<-data.frame(list(gender=c("M","M","F","M","F","F"),ages=c(47,59,21,32,33,24),income=c(55000,88000,32450,76500,123000,45650))) > d gender ages income 1 M 47 55000 2 M 59 88000 3 F 21 32450 4 M 32 76500 5 F 33 123000 6 F 24 45650 > d$over25<-ifelse(d$ages>25,1,0) > d gender ages income over25 1 M 47 55000 1 2 M 59 88000 1 3 F 21 32450 0 4 M 32 76500 1 5 F 33 123000 1 6 F 24 45650 0 > tapply(d$income,list(d$gender,d$over25),mean) 0 1 F 39050 123000.00 M NA 73166.67 #咱們設定了兩個因子,一個是性別,另外一個是指示變量(年齡是否大於25)。因爲兩個因子每一個都有兩個水平,tapply函數會將數據分爲四組,再分別應用mean函數。
1四、split函數
基本形式爲split(x,f):即x爲向量或數據框,f爲因子或因子列表。該函數把x劃分爲組,並返回分組的列表。
> split(d$income,list(d$gender,d$over25)) $F.0 [1] 32450 45650 $M.0 numeric(0) $F.1 [1] 123000 $M.1 [1] 55000 88000 76500
1五、集合函數
> a<-c(1,2,3,4,8,9) > b<-c(2,3,5,6,7,8) > union(a,b) #取a、b的並集 [1] 1 2 3 4 8 9 5 6 7 > intersect(a,b) #取a和b的交集 [1] 2 3 8 > setdiff(a,b) #取a和b的差集 [1] 1 4 9 > setequal(a,b) #比較兩個集合是否相等 [1] FALSE > is.element(el=6,set=a) #判斷元素是否在集合中 [1] FALSE > is.element(el=6,set=b) [1] TRUE > 1%in%a #判斷元素是否在集合中,也能夠使用%in%操做符 [1] TRUE
1六、table函數
> a<-c(1,1,1,2,3,1,2,3,3,3,7,6,2,7,8,8) > table(a) #table函數用來某些值出現的次數 a 1 2 3 6 7 8 4 3 4 1 2 2
1七、最值函數
#求多個向量中對應元素的最值 > a<-c(1,6,3,4,8,9) > b<-c(2,3,5,6,7,8) > pmax(a,b) [1] 2 6 5 6 8 9 > pmin(a,b) [1] 1 3 3 4 7 8
1八、解決載入含中文R程序報錯方法
> source("R文件.r",encoding="utf-8")