r语言中矩阵QR分解_从零开始学R语言Day4|向量、矩阵和数组
從零開始學(xué)R語言Day4|向量、矩陣和數(shù)組
1.1向量
1.1.1向量
在Day2中我們提及過用和c()函數(shù)來構(gòu)建向量,具體實(shí)例如下。
我們還可以采用vector(“類型”,長度)函數(shù)來創(chuàng)建一個(gè)指定類型和長度的矢量,這里的類型是指數(shù)據(jù)類型。但是個(gè)人覺得這個(gè)函數(shù)很雞肋,因?yàn)椴荒芸刂凭唧w的參量輸入,只能做初始化用途,據(jù)說是R語言發(fā)展歷史中的遺留函數(shù),所以本函數(shù)就權(quán)當(dāng)了解一下R的歷史吧。具體實(shí)例如下:
此后這樣的雞肋函數(shù)將不再介紹和記錄,感覺意義不大。
1.1.2序列和索引
可以用seq()函數(shù)構(gòu)建序列,功能和:相似,但與:不同的是seq能夠控制步長。因此seq()比:會(huì)更好用一點(diǎn)。seq()的用法如下:
seq(初始值,終止值,步長)
seq()函數(shù)下的各種方法的功能均相仿,對(duì)此我也表示比較困惑,諸如http://seq.int、seq_len、seq_along。
值得一提的是seq.Data()是對(duì)時(shí)間取序列
length()函數(shù)可以求得所有數(shù)據(jù)類型的長度,但要注意對(duì)字符串類型的向量求長度的時(shí)候計(jì)算的是向量里的因子個(gè)數(shù)
如果要求得向量里每個(gè)字符串的長度,則使用nchar()
用 變量命[] 這種形式可以索引向量中的某個(gè)元素,需要注意的是,R中下表不是從0開始計(jì)算而是從1開始計(jì)算。當(dāng)你想要一次返回多個(gè)值時(shí),應(yīng)該用c()函數(shù)聯(lián)接下標(biāo),否則將報(bào)錯(cuò)。
如果給向量中每個(gè)函數(shù)進(jìn)行了命名,索引其名字也可以返回值。
R語言的索引和其他語言的索引還有一個(gè)不同之處,一般編程語言以負(fù)數(shù)為下標(biāo)是從末尾往前讀取,比如說-1讀取的是最后一個(gè)字符,但是在R中以負(fù)數(shù)為索引則是不引用這個(gè)位置的字符的意思。比方說x[-2]則是跳過下標(biāo)為2的字符,具體實(shí)例如下:
x[] 這條指令將返回整個(gè)向量
which()將返回邏輯值為真的值的位置,因此當(dāng)你需要檢索檢索某個(gè)區(qū)間內(nèi)的值的位置的時(shí)候可以很方便的使用他,which.min()是檢索出最小值的位置,which.max()是檢索出最大值的位置。
rep()函數(shù)允許重復(fù)使用元素創(chuàng)建矢量,rep有幾種用法,不太好用語言概述,因此枚舉簡單的實(shí)例加以注解
rep_len()是rep(1:5,length.out=7)這個(gè)用法的變體
1.2矩陣和數(shù)組
向量是數(shù)組的特殊形式,即一維數(shù)組,故此處的數(shù)組是從二維開始算起的。矩陣也是數(shù)組的特殊形式。
1.2.1創(chuàng)建數(shù)組和矩陣
array()函數(shù)創(chuàng)建數(shù)組,它總共可以輸入值、維度和維度名三個(gè)參量,當(dāng)然參數(shù)名是一個(gè)可選的參量,不輸入系統(tǒng)會(huì)生成默認(rèn)的參量名。下面上例子,通過例子加注解的方式會(huì)更直白。
矩陣的構(gòu)建使用matrix()函數(shù),具體用法和array()相似,只是matrix()沒有dim參量,而是換成了nrow、ncol.上實(shí)例:
在這里我不得不多嘴一句,在構(gòu)建這種有大量括號(hào)的語句的時(shí)候,一定要小心細(xì)致的檢查任意一個(gè)標(biāo)點(diǎn)符號(hào),任何地方出錯(cuò)都會(huì)報(bào)如下錯(cuò)誤
我在編例子時(shí)就因?yàn)閬G了一個(gè)小小的逗號(hào)報(bào)錯(cuò)了。
1.2.2數(shù)組的索引
數(shù)組的索引和向量的索引語法一致,四種指定索引的方法在這里均可成立(正整數(shù)、負(fù)整數(shù)、邏輯值、元素名稱),這里不過多的贅述。
語法:x[第幾行,第幾列]也可以結(jié)合c函數(shù)同時(shí)索引幾個(gè)數(shù)據(jù)。
1.2.3合并矩陣
第一步:用c函數(shù)將兩個(gè)矩陣轉(zhuǎn)換成向量
第二步,根據(jù)自身需要選擇cbind()、rbind()函數(shù)按行和列來綁定兩個(gè)矩陣
1.2.4數(shù)據(jù)運(yùn)算
在復(fù)合線性代數(shù)的規(guī)則下,數(shù)組之間均可以進(jìn)行加減乘除,比如上例中要將x、y相加,直接鍵入x+y即可。
t()函數(shù)可以用來轉(zhuǎn)置矩陣,但不能轉(zhuǎn)置更高維度的數(shù)組
矩陣的內(nèi)乘運(yùn)算使用%*%這一運(yùn)算符,外乘使用%o%這一運(yùn)算符,這里不再舉例,運(yùn)用十分簡單。
矩陣求反
方法一:
先對(duì)矩陣求-1次冪,再對(duì)求得的-1次冪的矩陣用solve()函數(shù)。
注意!!!必須時(shí)正方形的矩陣,否則報(bào)錯(cuò)!!!
法二:還可以用qr.solve()或chol2inv(chol(m))替代solve(),不過一般記住solve函數(shù)就行
【未完待續(xù),持續(xù)更新……】
總結(jié)
以上是生活随笔為你收集整理的r语言中矩阵QR分解_从零开始学R语言Day4|向量、矩阵和数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: datagrid如何获取一行数据中的某个
- 下一篇: 打断点是什么意思_黄金走势分析?股票所说