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

弗蘭克的貓發表於2020-11-28

說明

在前一篇中,我們介紹了 R 語言和 R Studio 的安裝,並簡單的介紹了一個示例,接下來讓我們由淺入深的學習 R 語言的相關知識。

本篇將主要介紹 R 語言的基本操作、變數和幾種基本資料型別,好對 R 語言的使用方法有一個基本的概念。通過本篇的學習,你將瞭解到:

  1. R 語言有哪些基本操作
  2. 什麼是變數,以及如何給變數賦值
  3. R 語言有哪些基本資料型別,如何確定變數的資料型別

R 語言的基本操作

R 語言的預設提示符是 > ,它表示正在等待輸入命令,每次輸入命令後敲擊回車即可執行當前命令。

R 語言支援的基本操作主要有加、減、乘、除、取餘和冪運算,對應的運算子分別為:+、-、*、/、%%、^。

加減乘除就不必多說了,但有一點需要提一下,跟許多語言不一樣的是,R 語言中,除法運算得到的不是整數部分,而是包含小數部分的結果。

> 9/2
[1] 4.5
> 9/4
[1] 2.25
> 11/3
[1] 3.666667

取餘運算的含義是計算整除後的餘數:

> 9 %% 2
[1] 1
> 9 %% 4
[1] 1
> 9 %% 3
[1] 0
> 11 % 4
錯誤: unexpected input in "11 % 4"

在使用時需要注意的是有兩個百分號組成,輸入錯誤則會得上上述錯誤提示。

冪運算跟數學中的冪運算含義一致,2^3 代表的是2的3次冪:

> 2 ^ 3
[1] 8
> 3 ^ 2
[1] 9
> 2 ^ 10
[1] 1024
> 2 ^ 100
[1] 1.267651e+30

R 語言中的變數

在使用 R 語言時,我們通常很難一步到位得到最終的結果,需要進行一些複雜的計算。這時我們便需要使用變數來存放計算得到的中間結果。

R 語言中,可以將變數想象成一個盒子,我們可以將任何資料暫存到這個盒子裡,但同一時刻,這個盒子只能儲存一個資料,如果被多次賦值,則只會儲存最後一次放入的資料。

R 語言中的賦值符號是 ->,雖然也可以使用 = 進行賦值,但強烈建議不要這樣做,這樣不僅顯得不專業,而且在一些情況下會出現問題。

> x <- 3
> x <- 4
> x <- 9
> x
[1] 9

R 語言中的變數不需要事先宣告,直接使用即可。如果使用了一個之前沒有出現過的變數,則會建立一個新的變數。R 語言中變數是區分大小寫的,xX 是兩個不同的變數。

> X
錯誤: 找不到物件'X'
> X <- 1
> X <- 3
> X
[1] 3
> x
[1] 9

變數都是有名字的,比如xystu_score,變數的命名必須滿足以下規則:

  1. 只能使用字母(區分大小寫)、數字、“_”(下劃線)、“.”(英文句號),不能有中文、空格和其它特殊字元存在
  2. 不能以數字、下劃線開頭,開頭必須是英文字母或者點
  3. 可以以點號開頭,但點號後面的符號不能是數字

R 語言中,如果非要搞一些騷操作,用一些奇怪的變數名,也不是不可以,需要用反引號來包裹。

> `* 90` <- 10
> `* 90`
[1] 10
> `變數` <- 20
> `變數`
[1] 20

當然,不建議這樣做,變數取名最好簡單且有意義,這樣可以減少與其他人的溝通成本以及日後的理解成本。

R 語言中的基本資料型別

R 語言中主要資料型別有:向量、列表、矩陣、因子、資料框、陣列。這些會在後面的文章中進行介紹,本篇只介紹基本的幾種資料型別。

1. 邏輯型(logical)

邏輯型資料有兩種可能的值,TRUEFALSE

> v <- TRUE
> class(v)
[1] "logical"
> y <- FALSE
> class(v)
[1] "logical"
> y <- false
錯誤: 找不到物件'false'

class 函式可以獲取變數的型別資訊,可以看到,變數 vy 都是 logical 型別。需要注意的是 TRUEFALSE 必須全部大寫,否則會出現上面的錯誤提示。

2. 數值型(numeric)

R 語言中數字的預設型別為數值型,在運算時需要注意其精度問題,當整數部分大於等於7位時,將捨棄小數部分,當整數部分小於7位時,與小數部分一起最多保留7位數字。

> 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來表示,如:2L11L-10L

> i <- 1L
> class(i)
[1] "integer"
> j <- 22L
> class(j)
[1] "integer"
> k <- -10L
> class(k)
[1] "integer"

4. 字元型(character)

R 語言中字元型即字串型別,通常為用單引號或雙引號包圍的字串。

> name <- "Frank"
> class(name)
[1] "character"
> doc_name <- "study.mp4"
> class(doc_name)
[1] "character"

5. 複數型(Complex)

R 語言是支援複數計算的,複數也是 R 語言的基本型別之一。

> c1 <- 3 + 2i
> class(c1)
[1] "complex"
> c2 <-6 - 3i
> class(c2)
[1] "complex"

6. 原型(Raw)

R 語言還有一種不太常見的基本資料型別,叫原型(raw)。raw 型別是直接使用其二進位制內容來進行儲存和使用的型別。

> 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)integerdouble 內容都返回真值。

> 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 語言能為我們的資料分析提供更強力的支援!

相關文章