1. 程式人生 > >R語言學習筆記(一)

R語言學習筆記(一)

什麼是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次