iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 10
0
自我挑戰組

新手 R 語言學習紀錄系列 第 10

Day 10- R語言 矩陣(matrices)、data frame

  • 分享至 

  • xImage
  •  

Day 10- R語言 矩陣(matrices)、data frame

(前言:由於本人沒有接觸過程式語言及程式設計,寫的內容可能不是很正確,還請大家多多指教 :D)

在學完前面的向量之後,現在我們要開始接觸矩陣和資料框了 ˊˇˋ,還記得在第二天有說到R語言的其中一種程式設計法是陣列程式設計嗎?沒錯,今天我們就要好好發揮這個特性建立、使用矩陣和資料框,那我們就開始吧
不過,在正式進入矩陣之前,我們先用向量做出發點進入矩陣這個主題。以下,還是老樣子,用例題來學習吧
先建立一個1-30的向量 kirbsplayground 。
這時候,我們可以用 dim函數檢查這個向量的維度(dimension),但是我們得到的結果會是NULL,畢竟向量本身是沒有維度的,但是如果用length函數檢查向量長度的話,可以得30這個結果。
那如果要給這個向量一個維度來建立矩陣呢?可以喔!同樣地,我們用dim函數來執行這項任務,不過要在後面加上一個c函數,括號內指定維度即可,例:dim(kirbsplayground) <- c(5, 6),結果如下:
(註:用class函數可以檢驗kirbsplayground的屬性,結果會是matrix
https://ithelp.ithome.com.tw/upload/images/20190926/20120887IxbUfvkKU8.png
當然,要建立一個矩陣是不用這麼麻煩的,其實前面的步驟只要用一個matrix函數就搞定了,matrix函數寫法如下:matrix(矩陣首數:矩陣尾數, nrow = 列數, ncol = 欄數)

建立一個矩陣後,我們也可以為矩陣的列/欄命名。這樣的話要先建立兩個向量(要賦值到變數),例:一個為names ,一個為 stuffs,在這兩個向量裡分別指定對應矩陣列、欄數量的變數(在kirbsplayground裡有五個列,六個欄)。做好之後用cbind(欄)或rbind (列)函數+引數(欄/列變數, 矩陣變數)。範例輸出結果如下:
https://ithelp.ithome.com.tw/upload/images/20190926/201208870mW1yDV9VG.png
https://ithelp.ithome.com.tw/upload/images/20190926/20120887zjOMS86mWu.png

但是,輸出的結果好像有點怪怪的,數字都變成字串了。這是因為矩陣只能儲存一種性質的資料,但是我們放進這個矩陣的資料有兩種(數字、字串),因此,R會強迫數字變成字串。如果不想看到這些雙引號的話,R的data frame就很好用了,因為data frame 可以同時讓我們在同一個data frame裡儲存一種以上的資料。要將向量轉成data frame的函數就是data.frame,括弧中分別填上向量變數及矩陣變數。例:
https://ithelp.ithome.com.tw/upload/images/20190926/20120887qWtRzpuBkF.png

就差最後一步了!現在要替欄位命名,命名方式很簡單,只要打上colnames(data frames變數名稱) <- 欄位名稱變數,就可以了,例如:colnames(kirbsplayground) <- stuffs ,輸出結果如下:
https://ithelp.ithome.com.tw/upload/images/20190926/20120887KeBMgPzNLw.png

這樣就有一個美美的矩陣啦 :D

明天要學的是更多的邏輯函數 :)


上一篇
Day 9- R語言 向量子集 (Subsetting vectors)
下一篇
Day 11- R語言 更多邏輯符號
系列文
新手 R 語言學習紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言