【R語言入門】R語言中的變數與基本資料型別
阿新 • • 發佈:2020-11-28
## 說明
在前一篇中,我們介紹了 `R` 語言和 `R Studio` 的安裝,並簡單的介紹了一個示例,接下來讓我們由淺入深的學習 `R` 語言的相關知識。
本篇將主要介紹 `R` 語言的基本操作、變數和幾種基本資料型別,好對 `R` 語言的使用方法有一個基本的概念。通過本篇的學習,你將瞭解到:
1. `R` 語言有哪些基本操作
2. 什麼是變數,以及如何給變數賦值
3. `R` 語言有哪些基本資料型別,如何確定變數的資料型別
## R 語言的基本操作
`R` 語言的預設提示符是 `>` ,它表示正在等待輸入命令,每次輸入命令後敲擊回車即可執行當前命令。
![](https://img2020.cnblogs.com/blog/1043143/202011/1043143-20201128081833879-1555351561.png)
`R` 語言支援的基本操作主要有加、減、乘、除、取餘和冪運算,對應的運算子分別為:+、-、*、/、%%、^。
加減乘除就不必多說了,但有一點需要提一下,跟許多語言不一樣的是,`R` 語言中,除法運算得到的不是整數部分,而是包含小數部分的結果。
```R
> 9/2
[1] 4.5
> 9/4
[1] 2.25
> 11/3
[1] 3.666667
```
取餘運算的含義是計算整除後的餘數:
```R
> 9 %% 2
[1] 1
> 9 %% 4
[1] 1
> 9 %% 3
[1] 0
> 11 % 4
錯誤: unexpected input in "11 % 4"
```
在使用時需要注意的是有兩個百分號組成,輸入錯誤則會得上上述錯誤提示。
冪運算跟數學中的冪運算含義一致,`2^3` 代表的是2的3次冪:
```R
> 2 ^ 3
[1] 8
> 3 ^ 2
[1] 9
> 2 ^ 10
[1] 1024
> 2 ^ 100
[1] 1.267651e+30
```
## R 語言中的變數
在使用 `R` 語言時,我們通常很難一步到位得到最終的結果,需要進行一些複雜的計算。這時我們便需要使用變數來存放計算得到的中間結果。
`R` 語言中,可以將變數想象成一個盒子,我們可以將任何資料暫存到這個盒子裡,但同一時刻,這個盒子只能儲存一個數據,如果被多次賦值,則只會儲存最後一次放入的資料。
`R` 語言中的賦值符號是 `->`,雖然也可以使用 `=` 進行賦值,但強烈建議不要這樣做,這樣不僅顯得不專業,而且在一些情況下會出現問題。
```R
> x <- 3
> x <- 4
> x <- 9
> x
[1] 9
```
`R` 語言中的變數不需要事先宣告,直接使用即可。如果使用了一個之前沒有出現過的變數,則會建立一個新的變數。`R` 語言中變數是區分大小寫的,`x` 與 `X` 是兩個不同的變數。
```R
> X
錯誤: 找不到物件'X'
> X <- 1
> X <- 3
> X
[1] 3
> x
[1] 9
```
變數都是有名字的,比如`x`、`y`、`stu_score`,變數的命名必須滿足以下規則:
1. 只能使用字母(區分大小寫)、數字、“_”(下劃線)、“.”(英文句號),不能有中文、空格和其它特殊字元存在
2. 不能以數字、下劃線開頭,開頭必須是英文字母或者點
3. 可以以點號開頭,但點號後面的符號不能是數字
在 `R` 語言中,如果非要搞一些騷操作,用一些奇怪的變數名,也不是不可以,需要用反引號來包裹。
```R
> `* 90` <- 10
> `* 90`
[1] 10
> `變數` <- 20
> `變數`
[1] 20
```
當然,不建議這樣做,變數取名最好簡單且有意義,這樣可以減少與其他人的溝通成本以及日後的理解成本。
## R 語言中的基本資料型別
`R` 語言中主要資料型別有:向量、列表、矩陣、因子、資料框、陣列。這些會在後面的文章中進行介紹,本篇只介紹基本的幾種資料型別。
### 1. 邏輯型(logical)
邏輯型資料有兩種可能的值,`TRUE` 或 `FALSE` 。
```R
> v <- TRUE
> class(v)
[1] "logical"
> y <- FALSE
> class(v)
[1] "logical"
> y <- false
錯誤: 找不到物件'false'
```
`class` 函式可以獲取變數的型別資訊,可以看到,變數 `v` 和 `y` 都是 `logical` 型別。需要注意的是 `TRUE` 和 `FALSE` 必須全部大寫,否則會出現上面的錯誤提示。
### 2. 數值型(numeric)
`R` 語言中數字的預設型別為數值型,在運算時需要注意其精度問題,當整數部分大於等於7位時,將捨棄小數部分,當整數部分小於7位時,與小數部分一起最多保留7位數字。
```R
> i <- 10
> class(i)
[1] "numeric"
> j <- 11.1
> class(j)
[1] "numeric"
> k <- 1.1234567890
> class(k)
[1] "numeric"
> k
[1] 1.123457
> k <- 123456789.123456789
> k
[1] 123456789
> k <- 1234567.123456789
> k
[1] 1234567
> k <- 123456.123456789
> k
[1] 123456.1
```
### 3. 整數型(integer)
`R` 語言中,整數型需要使用數字+L來表示,如:`2L`、`11L`、`-10L`。
```R
> i <- 1L
> class(i)
[1] "integer"
> j <- 22L
> class(j)
[1] "integer"
> k <- -10L
> class(k)
[1] "integer"
```
### 4. 字元型(character)
`R` 語言中字元型即字串型別,通常為用單引號或雙引號包圍的字串。
```R
> name <- "Frank"
> class(name)
[1] "character"
> doc_name <- "study.mp4"
> class(doc_name)
[1] "character"
```
### 5. 複數型(Complex)
`R` 語言是支援複數計算的,複數也是 `R` 語言的基本型別之一。
```R
> c1 <- 3 + 2i
> class(c1)
[1] "complex"
> c2 <-6 - 3i
> class(c2)
[1] "complex"
```
### 6. 原型(Raw)
`R` 語言還有一種不太常見的基本資料型別,叫原型(`raw`)。`raw` 型別是直接使用其二進位制內容來進行儲存和使用的型別。
```R
> v <- charToRaw("Hello")
> class(v)
[1] "raw"
> v
[1] 48 65 6c 6c 6f
```
### 如何判斷變數的型別
當我們拿到一個變數之後,如何判斷它的資料型別呢?上面的例子中,其實已經有所提及,使用 `class()` 函式可以簡單方便的檢視變數的型別,但還有更簡單的方式,為了判斷某個變數`x` 儲存的基本型別,可以用 `is.xxx()` 類函式,如`is.integer(x)`, `is.double(x)`, `is.numeric(x)`, `is.logical(x)`, `is.character(x)`, `is.complex(x)`, `is.raw(x)`。 其中 `is.numeric(x)` 對 `integer` 和 `double` 內容都返回真值。
```R
> is.character(s)
[1] TRUE
> is.character(v)
[1] FALSE
> is.raw(v)
[1] TRUE
> is.integer(i)
[1] TRUE
> is.numeric(i)
[1] TRUE
> is.complex(c1)
[1] TRUE
> is.integer(c1)
[1] FALSE
```
## 小結
至此,本篇就告一段落了,相信通過本篇的學習,對 `R` 語言的基本資料型別能有一個整體的掌握,別忘了回顧一下之前的問題,這些你都瞭解了嗎:
1. `R` 語言有哪些基本操作
2. 什麼是變數,以及如何給變數賦值
3. `R` 語言有哪些基本資料型別,如何確定變數的資料型別
之後的篇章中,將會繼續介紹 `R` 語言的各方各面,讓 `R` 語言能為我們的資料分析提供更強力的支援!
![](https://img2020.cnblogs.com/blog/1043143/202011/1043143-20201128082031108-20755769