1. 程式人生 > >【R語言入門】R語言中的變數與基本資料型別

【R語言入門】R語言中的變數與基本資料型別

## 說明 在前一篇中,我們介紹了 `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