R語(yǔ)言常用函數(shù)

作為一門(mén)高級(jí)的數(shù)據(jù)分析語(yǔ)言,R語(yǔ)言不僅具有其它高級(jí)語(yǔ)言的自帶大量?jī)?nèi)嵌函數(shù)的方便特性,而且它的一些函數(shù)更側(cè)重于數(shù)據(jù)統(tǒng)計(jì)分析,成為越來(lái)越多的數(shù)據(jù)分析人員首選語(yǔ)言。下面就來(lái)列一下R中的一些常用函數(shù)。與matlab一樣,作為第二個(gè)以向量式運(yùn)算作為主要運(yùn)算方式的編程語(yǔ)言,R的一些函數(shù)主要是針對(duì)向量的。

作用于向量

>x <- 1:10 >sum(x)    #對(duì)x中的元素求和
[1] 55
>length(x)    #返回x的長(zhǎng)度
[1] 10
>prod(x)    #求x中所有元素的連乘積
[1] 3628800
> prod(2:10)    #求10的階乘
[1] 3628800
>max(x)    #求x的最大值
[1] 10
>min(x)    #求x的最小值
[1] 1
>which.max(x)    #返回x中最大值的下標(biāo)
[1] 10
>range(x)    #返回x的最值
[1]  1 10
>mean(x)    #返回x的均值
[1] 5.5
>median(x)    #返回x的中位數(shù)
[1] 5.5
>var(x)    #返回x的方差
[1] 9.166667
>sd(x)    #返回x的標(biāo)準(zhǔn)差
[1] 3.02765
>rev(x)    #對(duì)x中元素取逆序
[1] 10  9  8  7  6  5  4  3  2  1
y <- c(2,1,4,3) >sort(y)    #返回y的排序
[1] 1 2 3 4
> cumsum(x)    #求累積和,返回一個(gè)向量,它的第i個(gè)元素是從x[1]到x[i]的和,這點(diǎn)與matlab一樣
[1]  1  3  6 10 15 21 28 36 45 55
>cumprod(x)    #從左到右依次求累積
[1]       1       2       6      24     120     720    5040
[8]   40320  362880 3628800
>cummin(x)    #從左到右求累積最小值
[1] 1 1 1 1 1 1 1 1 1 1
>match(x,y)    #返回y中與x中相同的元素在y中的位置
[1]  2  1  4  3 NA NA NA NA NA NA

矩陣拼接

>a <- matrix(c(1:12),2,6) >b <- matrix(c(13,36),3,6) >rbind(a,b)    #矩陣按行拼接
      [,1]  [,2]  [,3]  [,4]  [,5]  [,6]
[1,]    1    3    5    7    9   11
[2,]    2    4    6    8   10   12
[3,]   13   16   19   22   25   28
[4,]   14   17   20   23   26   29
[5,]   15   18   21   24   27   30
>cbind(a,b)    #按列拼接
Error in cbind(a, b) : number of rows of matrices must match (see arg 2)

顯然,只有列數(shù)相同才能按行拼接,行數(shù)相同才能按列拼接。

缺失值處理

> z <- c(1,2,3,NA) > complete.cases(z)
[1]  TRUE  TRUE  TRUE FALSE

沒(méi)有缺失就標(biāo)記為T(mén)RUE,否則標(biāo)記為FALSE。

> ind <- complete.cases(z) >ind
[1]  TRUE  TRUE  TRUE FALSE
> z[ind]
[1] 1 2 3

下面用na.omit()直接去掉缺失值,返回去掉缺失值后的向量。

> na.omit(z)
[1] 1 2 3    去除缺失值后
attr(,"na.action")
[1] 4
attr(,"class")
[1] "omit"

其它函數(shù)

> w <- 100000 > format(w,digits = 1,scientific = TRUE)    #返回科學(xué)計(jì)數(shù)值
[1] "1e+05"
>Sys.time()    #返回系統(tǒng)時(shí)間
[1] "2017-05-30 19:25:48 CST"
>format(Sys.time(),"%Y-%m-%d")    #返回標(biāo)準(zhǔn)時(shí)間格式
[1] "2017-02-22"
> format(Sys.time(),"%Y-%m-%d %A")
[1] "2017-05-30 星期二"
>ls()    #查看內(nèi)存中所有變量
[1] "a" "b" "x" "y" "z"
>rm(x)    #從內(nèi)存中清除變量x
>x
Error: object 'x' not found

清除內(nèi)存所有變量

>rm(list = ls())
當(dāng)然了,我們還可以自定義函數(shù),現(xiàn)以一個(gè)小例子說(shuō)明R中自定義函數(shù)的格式,比如我么要對(duì)一個(gè)數(shù)組求和:
>SUM<-function(num){
+x<-0
+for(i in 1:length(num)){
+x<-x+num(i) +} +return(x) +} >n=c(1:100)
>SUM(n)
[1] 5050

字符串處理函數(shù)

連接

> paste0('hello',' world!')
[1] "hello world!"

截取

substr(string,n1,n2),截取n1位置開(kāi)頭,n2位置結(jié)束之間字符串。
> substr('123456',3,4)
[1] "34"

當(dāng)然了,關(guān)于R語(yǔ)言正則表達(dá)式函數(shù)有很多,也很復(fù)雜,需要用時(shí)再去查找是一個(gè)好的選擇。





作者:柯廣的網(wǎng)絡(luò)日志

微信公眾號(hào):Java大數(shù)據(jù)與數(shù)據(jù)倉(cāng)庫(kù)