跳到主要內容

R語言翻轉教室-5【01-RBasic-05-Arrays-Matrices】


*建立一個型態為numeric,由1到18的向量。

seq(1,18)

*利用`matrix`這個函數來建立一個矩陣。舉例來說,就可以建立一個6 乘3 的矩陣。 請同學試試看,並把這個矩陣寫入變數x 。

x <- matrix(1:18, 6, 3)

利用attributes(x)可以看到以下結果:

$dim
[1] 6 3

這代表著x有一個名字叫做"dim"的屬性,值是`c(6, 3)`,代表這是一個6 乘3 的矩陣

更高維度的矩陣 matrix(行 ,列,組)

舉例:

matrix(1:18,6,3) 也可以用這樣表示=> array(1:18, c(6,3))

     [,1] [,2] [,3]
[1,]    1    7   13
[2,]    2    8   14
[3,]    3    9   15
[4,]    4   10   16
[5,]    5   11   17
[6,]    6   12   18

dim(x) <- c(3,3,2)

cbind, rbind

cbind(matrix(1:4, 2, 2), matrix(1:4, 2,2))`會將兩個矩陣的行合併,運算之後會變成2 乘 4的矩陣。請同學試試看。

範例:
cbind(matrix(1:4, 2, 2),matrix(1:4, 2,2))

     [,1] [,2] [,3] [,4]
[1,]    1    3    1    3
[2,]    2    4    2    4

rbind(matrix(1:4, 2, 2),matrix(1:4, 2,2))

     [,1] [,2]
[1,]    1    3
[2,]    2    4
[3,]    1    3
[4,]    2    4

在R 中,線性代數運算的底層是透過BLAS等函式庫做運算的,所以效能遠勝過自己用C 寫的線性代數運算。 另外,R 預設的BLAS庫為比較被廣泛驗證過正確性的版本,而非效能比較快版本。 這是因為,R core Team認為正確性比較重要,所以目前是採用比較舊,但是也比較可靠的BLAS庫。

在R 中,要對一個矩陣做轉置,可以用`t`這個函數

我們可以用diag快速建構對角化的矩陣。舉例來說:diag(1, 3)會建立出3 乘3 的單位矩陣。請試試看。

範例:
diag(1,3)

     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    0
[3,]    0    0    1

最後關卡63卡關

課程筆記參考: R語言翻轉教室

回家作業:連結

留言

這個網誌中的熱門文章

C++ How to Program 7/E 筆記 -- 第四章 控制敘述:第一部份

C++  How to Program 7/E 筆記 第四章 控制敘述:第一部份 學習目標 基本的問題解決技術 以由上而下,逐步修改的程序,開發演算法 使用if  和 if ...else 選擇敘述選擇要執行的動作 使用while重複敘述反覆執行程序中的敘述 技術控制重複與警示控制重複 使用遞增、遞減和指定運算子

【Quora 翻譯&筆記】你能從你的Android App 賺多少錢?

原文出處: How much money do you make from your Android application? 這方面的答案僅供參考: Stanley Idesis (2016/ 4/ 10) app : Quotograph 沒有內嵌廣告,採取免費使用的策略,另外有IAP(in app purchase)的模式,不過發現在play store 用戶的付費意願非常低。

【Quora 翻譯&整理】對於程式初學者嘗試解決問題的好網站推薦

原文出處: What are some suggested websites to solve programming problems for beginners? (2016/5/15) 此篇文章強調的是去參加project的那種網站推薦