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ù)