說明
在前一篇中,我們介紹了 R
語言和 R Studio
的安裝,並簡單的介紹了一個示例,接下來讓我們由淺入深的學習 R
語言的相關知識。
本篇將主要介紹 R
語言的基本操作、變數和幾種基本資料型別,好對 R
語言的使用方法有一個基本的概念。通過本篇的學習,你將瞭解到:
R
語言有哪些基本操作- 什麼是變數,以及如何給變數賦值
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
語言中變數是區分大小寫的,x
與 X
是兩個不同的變數。
> X
錯誤: 找不到物件'X'
> X <- 1
> X <- 3
> X
[1] 3
> x
[1] 9
變數都是有名字的,比如x
、y
、stu_score
,變數的命名必須滿足以下規則:
- 只能使用字母(區分大小寫)、數字、“_”(下劃線)、“.”(英文句號),不能有中文、空格和其它特殊字元存在
- 不能以數字、下劃線開頭,開頭必須是英文字母或者點
- 可以以點號開頭,但點號後面的符號不能是數字
在 R
語言中,如果非要搞一些騷操作,用一些奇怪的變數名,也不是不可以,需要用反引號來包裹。
> `* 90` <- 10
> `* 90`
[1] 10
> `變數` <- 20
> `變數`
[1] 20
當然,不建議這樣做,變數取名最好簡單且有意義,這樣可以減少與其他人的溝通成本以及日後的理解成本。
R 語言中的基本資料型別
R
語言中主要資料型別有:向量、列表、矩陣、因子、資料框、陣列。這些會在後面的文章中進行介紹,本篇只介紹基本的幾種資料型別。
1. 邏輯型(logical)
邏輯型資料有兩種可能的值,TRUE
或 FALSE
。
> 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位數字。
> 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
。
> 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)
對 integer
和 double
內容都返回真值。
> 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
語言的基本資料型別能有一個整體的掌握,別忘了回顧一下之前的問題,這些你都瞭解了嗎:
R
語言有哪些基本操作- 什麼是變數,以及如何給變數賦值
R
語言有哪些基本資料型別,如何確定變數的資料型別
之後的篇章中,將會繼續介紹 R
語言的各方各面,讓 R
語言能為我們的資料分析提供更強力的支援!