R:nothing but review

一、查看已安裝包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")
相關文章
相關標籤/搜索