R 語言可以用來處理資料、統計分析、模擬、科學運算以及圖形功能,你可以直接安裝 R Studio 軟體 (R軟體官方網站),就可以很輕易的在 GUI 上透過許多的套件模組並搭配 R 程式來畫出許多圖形,要能夠善用這些套件之前我們要先學習基本的資料型態以及語法運用。
學習目標
R 語言的基本介紹以及語法上的寫法。
常見的資料類型
- 原型 Raw:二進制的資料
- 數字 Numeric:可以是整數 Integers 、小數 Decimal Fractions 、科學符號 Scientific Notation
1 2 3 4 5 6 7
| > a<-3 > class(a) [1] "numeric"
> b<-3.14 > class(b) [1] "numeric"
|
1 2 3
| > c<-"3" > class(c) [1] "character"
|
- 邏輯 Logical:TRUE / FALSE 兩種值
1 2 3 4 5 6 7 8 9 10 11 12 13
| > d<-T > class(d) [1] "logical"
> e<-TRUE > class(e) [1] "logical"
> f<-FALSE > class(f) [1] "logical"
這裡的 T 就代表 TRUE, 如果輸入 F 就代表 FALSE
|
1 2 3 4
| > 3+2i [1] 3+2i > class(3+2i) [1] "complex"
|
賦值
我們先看一個例子,在控制台輸入以下程式,假設有五個人的成績分別是 53
, 65
, 98
, 42
, 62
,那麼我們用 c()
Concatenate 代表連結成一個向量,把這個向量賦值給 x,而 x 就是向量的名稱。
1 2 3
| > x <- c(53, 65, 98, 42, 62) > x [1] 53 65 98 42 62
|
R 語言的賦值運算符號是用 <-
而非 =
,雖然也是可以用 =
但不建議使用,可能會在環境下產生衝突,所以如果遇到給值的變數,就使用 <-
方式。另外 R 語言有一些內建函數,可以對這個向量做一些簡單的運算
1 2 3 4 5 6 7 8 9
| > # 找出最大值 > max(x) [1] 98 > # 找出最小值 > min(x) [1] 42 > # 算出平均數 > mean(x) [1] 64
|
是不是很簡單呢?
資料類型的判斷 :: is 系列函數
用來檢查某一個物件是否具有查詢的屬性,回傳會是 true or false,包含:
- is.numeric
- is.list
- is.function
- is.character
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| > data <- 'example' > # 檢查是否為數字類型 > is.numeric(data) [1] FALSE
> # 檢查是否為串列類型 > is.list(data) [1] FALSE
> # 檢查是否為函數類型 > is.function(data) [1] FALSE
> # 檢查是否為字串類型 > is.character(data) [1] TRUE
|
資料類型的轉換 :: as 系列函數
用來將變數強迫轉換,包含:
- as.vector
- as factor
- as.matrix
- as.numeric
- as.double
- as.data.frame
- as.list
1 2 3 4 5 6 7
| > data <- 'example' > as.vector(data) [1] "example" > data2 <- 2345
> as.character(data2) [1] "2345"
|
常見的轉換函數表
資料類型 |
中文 |
判斷函數 |
轉換函數 |
character |
字串 |
is.character() |
as.character() |
numeric |
數字 |
is.numeric() |
as.numeric() |
logical |
邏輯 |
is.logical() |
as.logical() |
complex |
複數 |
is.complex() |
as.complex() |
NA |
缺少 |
is.na() |
as.na() |
套件有關的工具函數
- 在 console 輸入指令下載安裝套件,括號內是套件的名字,一般來說要加雙引號
1
| > install.packages("car")
|
然而有些套件會隨著功能的更新,需要定期的更新套件,使用更新套件的指令是
若想知道安裝了哪些套件,那麼可以使用指令是
- 使用套件的函數,先載入套件方法有二:library, require
library 和 require 都是載入 package,但是最大的差別在於 library 如果是載入的 package 不存在,是會發生 error 程式停止,但是 require 卻不會,而且 require 會回傳 true or false
1 2
| > libaray(套件名稱) > require(套件名稱)
|
範例
1 2 3 4 5
| > libaray(quantmod) > require(quantmod) > x<-require(quantmod) > x [1] TRUE
|
- 避免記憶體吃緊或避免不同套件的同名函數彼此衝突,簡單來說就是「卸載」
1 2 3
| > demo(graphics)
結果:說明文件裡面顯示範例程式
|
1 2 3
| > RSiteSearch("anova")
結果:就會開啟網頁到 R Site Search 上面查詢你所下的關鍵字
|
若你有一支自訂函數的檔案為 test.R,那麼你就可以透過以下指令來呼叫使用
1
| > source("/user/code/test.R")
|
參考