R語言學習筆記(一)
阿新 • • 發佈:2018-11-08
什麼是R語言?
R是用於統計分析、繪圖的語言和操作環境。R是屬於GNU系統的一個自由、免費、原始碼開放的軟體,它是一個用於統計計算和統計製圖的優秀工具。
- R語言的發展歷史:
R是統計領域廣泛使用的誕生於1980年左右的S語言的一個分支。可以認為R是S語言的一種實現。而S語言是由AT&T貝爾實驗室開發的一種用來進行資料探索、統計分析和作圖的解釋型語言。最初S語言的實現版本主要是S-PLUS。S-PLUS是一個商業軟體,它基於S語言,並由MathSoft公司的統計科學部進一步完善。後來紐西蘭奧克蘭大學的Robert Gentleman和Ross Ihaka及其他志願人員開發了一個R系統。由“R開發核心團隊”負責開發。R可以看作貝爾實驗室(AT&T BellLaboratories)的RickBecker,JohnChambers和AllanWilks開發的S語言的一種實現。當然,S語言也是S-Plus的基礎。所以,兩者在程式語法上可以說是幾乎一樣的,可能只是在函式方面有細微差別,程式十分容易地就能移植到一程式中,而很多一的程式只要稍加修改也能運用於R。 - R語言的特點:
R作為一種統計分析軟體,是集統計分析與圖形顯示於一體的。它可以運行於UNIX,Windows和Macintosh的作業系統上,而且嵌入了一個非常方便實用的幫助系統,相比於其他統計分析軟體,R還有以下特點:
1.R是自由軟體。這意味著它是完全免費,開放原始碼的。可以在它的網站及其映象中下載任何有關的安裝程式、原始碼、程式包及其原始碼、文件資料。標準的安裝檔案身自身就帶有許多模組和內嵌統計函式,安裝好後可以直接實現許多常用的統計功能。
2.R是一種可程式設計的語言。作為一個開放的統計程式設計環境,語法通俗易懂,很容易學會和掌握語言的語法。而且學會之後,我們可以編制自己的函式來擴充套件現有的語言。這也就是為什麼它的更新速度比一般統計軟體,如,SPSS,SAS等快得多。大多數最新的統計方法和技術都可以在R中直接得到。 - 所有R的函式和資料集是儲存在程式包裡面的。只有當一個包被載入時,它的內容才可以被訪問。一些常用、基本的程式包已經被收入了標準安裝檔案中,隨著新的統計分析方法的出現,標準安裝檔案中所包含的程式包也隨著版本的更新而不斷變化。在另外版安裝檔案中,已經包含的程式包有:base一R的基礎模組、mle一極大似然估計模組、ts一時間序列分析模組、mva一多元統計分析模組、survival一生存分析模組等等.
4.R具有很強的互動性。除了圖形輸出是在另外的視窗處,它的輸入輸出視窗都是在同一個視窗進行的,輸入語法中如果出現錯誤會馬上在視窗口中得到提示,對以前輸入過的命令有記憶功能,可以隨時再現、編輯修改以滿足使用者的需要。輸出的圖形可以直接儲存為JPG,BMP,PNG等圖片格式,還可以直接儲存為PDF檔案。另外,和其他程式語言和資料庫之間有很好的介面。
R是基於S語言的一個GNU專案,所以也可以當作S語言的一種實現,通常用S語言編寫的程式碼都可以不作修改的在R環境下執行。 R的語法是來自Scheme。R的使用與S-PLUS有很多類似之處,這兩種語言有一定的相容性。S-PLUS的使用手冊,只要稍加修改就可作為R的使用手冊。所以有人說:R,是S-PLUS的一個“克隆”。
寫在前面:學習任何一種語言都要善於使用幫助,在R語言中也是如此。
例:
> ?read.csv()
在函式前加上“?”即可調出幫助。
R語言常用語法
- R語言建立向量和矩陣
(1) c()
用c()來建立一個向量用c()來建立一個向量
例:
> x1 = c(1,2,3,4,5)
> x1
[1] 1 2 3 4 5
>
(2)length()
用length()來求一個向量的長度
例:
> length(x1)
[1] 5
(3)mode()
用mode()來顯示資料型別
例:
> mode(x1)
[1] "numeric"
注:R語言中有四種基本型別,分別是邏輯型(Logical),數字型(Numeric),複合型(Complex),字元型(Character)
(4)rbind()
用rbind()可以把x1和x2以行的形式組合成矩陣
例:
> rbind(x1,x2)
[,1] [,2] [,3] [,4] [,5]
x1 1 3 5 7 9
x2 0 2 4 6 8
利用rbind()可以用於增加一行
例:
> rbind(x1,1:5)
[,1] [,2] [,3] [,4] [,5]
x1 1 3 5 7 9
x2 1 2 3 4 5
(5)cbind()
用cbind()可以把x1與x2以列的形式組合成矩陣
例:
> cbind(x1,x2)
x1 x2
[1,] 1 0
[2,] 3 2
[3,] 5 4
[4,] 7 6
[5,] 9 8
同理,利用cbind()可以用於增加一列
> cbind(x1, 1:5)
x1 x2
[1,] 1 1
[2,] 3 2
[3,] 5 3
[4,] 7 4
[5,] 9 5
- R語言求平均值、和、連乘、最值、方差、標準差
求平均值:mean()
例:
> x = c(1:10)
> mean(x)
[1] 5.5
求和:sum()
例:
> sum(x)
[1] 55
求最小值:min()
例:
> min(x)
[1] 1
求最大值:max()
例:
> max(x)
[1] 10
求方差:var()
例:
> var(x)
[1] 9.166667
求標準差:sd(),也可以用方差開根號
例:
> sd(x)
[1] 3.02765
- which()函式
顯示最大數的下標:
> which.max(a)
顯示數列中最大的數:
> a[which.max(a)]
顯示最小數的下標:
> which.min(a)
顯示數列中最小的數:
> a[which.min(a)]
顯示資料為x的下標
> which(a==x)
顯示資料大於x的下標
> which(a>x)
- 隨機資料的產生
rnorm(n, mean = 0, sd = 1) #正態分佈的隨機數
runif(n, min = 0, max = 1) #平均分佈的隨機數
rep(1,5) #把1重複5次