熟悉一個程式語言,非常重要的一點就是了解它的資料型態。在進行語料處理與 NLP 任務時也會遇到各式各樣的資料型態,有時候為了使用特定的模型來訓練資料也會需要把資料轉換成相應的資料型態。因此,-䅰篇就來好好了解一下各種不同的資料型態吧!
在 R 語言中,以下是常見的資料型態
前四項較為單純,與數字相關的就是 integer 和 number,如果要在 R 裡宣告一個數字,方法如下:
a <- 5
b <-2.3
執行之後我們可以使用 str() 這個 function 來檢視資料型態
str(a)
str(b)
執行結果為:
num 5
num 2.3
看到這邊有沒有覺得很奇怪呢?明明 a 是整數,應該要是 integer 啊!?其實這是因為這是因為 R 預設的數字型態是「number」。所以若直接把數字存到變數中,其資料型態是「number」。 那麼,如果想要轉換資料型態,變成 integer 時就要使用as.integer()。以下先轉換資料型態,在使用 str() 檢查。
a = as.integer(a)
b = as.integer(b)
str(a)
str(b)
執行結果為:
int 5
int 2
這邊可以發現因為是轉換成整數,故原本的 2.3 會變成 2
此外,看到這邊想必各位都能夠舉一反三的轉換資料型態了吧!沒錯~轉換的方式就是 as.____這樣的形式,以下列出轉換函式。
除了 str() 可以看資料型態之外,我們也可以使用判斷式來確認資料型態,例如以下 code 所示
a <- as.integer(5)
b <- 2.3
is.integer(a)
is.integer(b)
執行結果為:
[1] TRUE
[1] FALSE
如同 as.____這樣的函式,is.____也是同樣的道理,以下列出判斷函示
所謂的布林代數(boolean),代表的是 True 和 False,常用於邏輯式上的判斷。在 R 裡面,以logic的資料型態來表示。
a <- TRUE
b <- FALSE
str(a) #確認 a 的型態
is.integer(b) #判斷 b 是不是整數,但 b 是 logic 型態,故會回傳 FALSE
執行結果為:
logi TRUE
[1] FALSE
要定義一個character變數時,注意右邊的值,要用雙引號(" ")括起來
c <- "happy" # c 的資料型態是character
adjective <- c # c 是變數,把 c 存到 adjective 裡
str(adjective) # 確認professor資料型態
執行結果為:
chr "happy"
vector(陣列 / 向量)是 R 語言中很重要的資料型態,一列或一行長長的資料都會被儲存成 vector。定義 vector 的時候要使用 c()。
a <- c(2, 4, 6, 8, 10) # 建立一個number vector
b <- c("delighted", "upset", "annoyed") # 建立一個character vector
a
b
執行結果為:
[1] 2 4 6 8 10
[1] "delighted" "upset" "annoyed"
在 vector 裡面,無論是數字還是字串都稱之為 vector 的元素(element)。簡單來說可以把 vector 想像成一個長長的貨架,貨架上的商品(element)按照順序編號(index),表示方法為 object[index]。就上面 code 來說 vector b 裡面的 delighted 就表示為 b[1],upset 是 b[2],依此類推。因此,如果要取 vector a 中的 8 這個數字就要寫:
a[4]
另外要注意在 vector 裡每一個 element 都會是相同的型態,所以若是把 number 和 character 同時放入 vector 裡,R 會自動將所有 element 的型態,轉變成 character,logic 和 number 同時在 vector 裡的話 T和 F 會被自動轉換成 1和 0。
factor的型態,主要用來表示「類別變數」(category variable)。例如性別(男、女)、年級(小一、小二......)、地區(東、西、南、北)等等......
在用R進行資料分析時,當遇到這類「類別變數」時,要轉換成 factor 的資料型態,再丟入模型(model)進行分析。
factor 的資料型態和 vector 很相似,但 factor 具有額外的類別屬性(levels)。
建立 factor 的變數,要使用factor() 這個 function。
direction <- c("west", "east", "north", "south") # 建立一個 character vector
direction <- as.factor(direction) # 轉換成 factor 型態
direction # Levels 的屬性代表在這個變數裡面,存在哪些類別
執行結果為:
[1] west east north south
Levels: east north south west
如果手邊有一組類別變數想要查看裡面存在著哪些類別,可以用levels()函式
levels(direction)
執行結果為:
[1] "east" "north" "south" "west"
由於剩下的資料型態較為複雜,因此明天再繼續講解 list、matrix 和 data frame 吧!