R語言數(shù)據(jù)結(jié)構(gòu)之矩陣、數(shù)組與數(shù)據(jù)框詳解
前言
了解一門語言,首先要了解它的數(shù)據(jù)結(jié)構(gòu)。該文主要介紹矩陣、數(shù)組和數(shù)據(jù)框。文章僅供學(xué)習(xí)使用,歡迎留言交流哦!
一、矩陣(matrix)
1.1矩陣的創(chuàng)建:
矩陣由指定的行(row)和列(column)構(gòu)成,與高數(shù)中的矩陣相同。與之前提到的向量一樣,矩陣只能儲(chǔ)存同種類型的數(shù)據(jù)。
matrix( ):創(chuàng)建矩陣
matrix( data #要?jiǎng)?chuàng)建矩陣的數(shù)據(jù),一般為向量 nrow #行數(shù) ncol #列數(shù) byrow = TRUE #若為TRUE,按行填充矩陣,若為FALSE,按列填充矩陣 dimnames #為矩陣個(gè)維度命名 )
接下來使用該函數(shù)來創(chuàng)建一個(gè)3*3的矩陣:
如圖所示,這個(gè)由1~9組成的3*3矩陣,左邊指定了行數(shù)未指定列數(shù),右邊指定了列數(shù)未指定行數(shù),但所得矩陣相同,所以系統(tǒng)會(huì)自動(dòng)識(shí)別并填充。上面兩個(gè)矩陣都是按列填充矩陣,由于未設(shè)置byrow,所以采用默認(rèn)值FALSE。下面來看一下當(dāng)byrow為TRUE時(shí),有何不同:
可以看出,byrow為TRUE時(shí),矩陣對(duì)數(shù)據(jù)進(jìn)行了按行填充。
接下來介紹dimnames函數(shù),為矩陣的行與列命令,第一個(gè)向量為行名,第二個(gè)向量為列名。
matrix(1:9,ncol = 3,byrow = TRUE,dimnames = list(c("x1","x2","x3"),c("y1","y2","y3")))
得到下圖所示矩陣,與上述矩陣相比,[1,]等變成了x1,y1。
對(duì)于已經(jīng)創(chuàng)建好的向量,可以使用dimnames(),rownames(),colnames()為矩陣進(jìn)行命名:
創(chuàng)建名為train1,train2的矩陣,train1用dimnames()進(jìn)行命名,train2分別用rownames(),colnames()對(duì)行與列進(jìn)行命名。
train1 <- matrix(1:9,ncol = 3) train2 <- matrix(10:18,ncol = 3) dimnames(train1) <- list(c("x1","x2","x3"),c("y1","y2","y3")) (rownames(train2) <- c("迪迦","塞羅","特斯拉")) (colnames(train2) <- c("天王","地虎","二百五"))
所得結(jié)果如上圖。同時(shí)dimnames(),rownames(),colnames()還能獲取矩陣的名稱,使用dimnames獲取train2的名稱(其他兩個(gè)大家可以自己嘗試一下昂),結(jié)果如下圖:
1.2訪問矩陣的數(shù)據(jù):
matrixname[ridx,cidx]:訪問matrixname矩陣中ridx行cidx列的數(shù)據(jù):
例如訪問train1中的第二行第二列數(shù)據(jù),為5。
也可以使用負(fù)數(shù),效果與向量中使用負(fù)數(shù)相同,即輸出除某列或某行的其他所有數(shù)據(jù)。例如輸出train2中除第二行的所有數(shù)據(jù)。
1.3矩陣的運(yùn)算:
運(yùn)算符 | 含義 |
---|---|
X + a | 矩陣X中所有值與標(biāo)量a相加,還可以使用"-","*","/"運(yùn)算符 |
X + Y | 對(duì)矩陣X與矩陣Y求和,還能使用"-"求矩陣間的差 |
X %*% Y | 求矩陣X與矩陣Y的積 |
函數(shù)名 | 函數(shù)作用 |
solve() | 從式子Y%*%X=Z中求解X,Y、Z為矩陣 |
nrow() | 求行數(shù) |
ncol() | 求列數(shù) |
dim | 求維度 |
dim <- | 設(shè)置對(duì)象的維度 |
t() | 求矩陣的轉(zhuǎn)置矩陣 |
這里就不演示了,大家可以自己嘗試,如果有疑問可以評(píng)論交流(一般中午、晚上會(huì)看的,歡迎評(píng)論哦)。
二、數(shù)組(array)
2.1數(shù)組的創(chuàng)建:
數(shù)組與矩陣、向量不同,它可以存儲(chǔ)不同數(shù)據(jù)類型的數(shù)據(jù)。而且數(shù)組是多維的,可以是2*3*4維的。創(chuàng)建數(shù)組使用array()函數(shù):
array( data #數(shù)據(jù) dim = length(data) #數(shù)組維數(shù),若不設(shè)置,則為一維數(shù)組 dimnames #維度的名稱 )
接下來創(chuàng)建一個(gè)3*4的數(shù)組和一個(gè)2*3*2的數(shù)組作為示例:
x <- array(1:12,dim = c(3,4)) y <- array(1:12,dim = c(2,3,2))
所得結(jié)果如上圖,左圖很容易看懂,不做過多解釋。右圖根據(jù) y <- array(1:12,dim = c(2,3,2))所得,其中c(2,3,2)的最后一個(gè)數(shù)字是指右圖中,,1和,,2,可以將其理解為層數(shù),第一層由1,2,3,4,5,6構(gòu)成,兩行三列。
2.2訪問數(shù)組的數(shù)據(jù):
與向量相同,使用X[xidx,yidx,zidx...nidx]訪問數(shù)組數(shù)據(jù):
訪問y第二層中第二行第二列的數(shù)據(jù),結(jié)果如下:
三、數(shù)據(jù)框
3.1數(shù)據(jù)框的創(chuàng)建:
數(shù)據(jù)框類似于表格,例如上面矩陣運(yùn)算中所展示的表格。可以使用data.frame()創(chuàng)建數(shù)據(jù)框
data.frame( #以value或name = value的形式展現(xiàn)的數(shù)據(jù)值 )
可能有點(diǎn)看不懂,沒有關(guān)系,我們來看幾個(gè)例子就可以了。創(chuàng)建一個(gè)名為名人的數(shù)據(jù)框:
名人 <-data.frame(美女 = c("西施","王昭君","貂蟬"),名將 = c("荊軻","要離","岳飛"))
x <- 1:5 y <- 6:10 z <- 11:15 d <- data.frame(x,y,z)
運(yùn)行結(jié)果如上圖,數(shù)據(jù)框會(huì)將你輸入的數(shù)據(jù)按列排布,做出一個(gè)類似表格的形式。在數(shù)據(jù)框中也可以使用rownames(),colnames()等函數(shù),下面以rownames做一個(gè)示例:
rownames(d) <- c("three","four","two","five","one")
數(shù)據(jù)框的數(shù)據(jù)訪問于上述差不多,大家可以自己嘗試一下。
總結(jié)
到此這篇關(guān)于R語言數(shù)據(jù)結(jié)構(gòu)之矩陣、數(shù)組與數(shù)據(jù)框的文章就介紹到這了,更多相關(guān)R語言矩陣、數(shù)組與數(shù)據(jù)框內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決R語言安裝時(shí)出現(xiàn)輯程包不存在的問題
這篇文章主要介紹了解決R語言安裝時(shí)出現(xiàn)輯程包不存在的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04R語言關(guān)于泊松回歸知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家分享的是一篇關(guān)于R語言關(guān)于泊松回歸知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-05-05R語言表達(dá)式知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理了一篇關(guān)于R語言表達(dá)式知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。2021-03-03R語言數(shù)據(jù)可視化包ggplot2畫圖之散點(diǎn)圖的基本畫法
散點(diǎn)圖主要用于描述兩個(gè)連續(xù)變量之間的關(guān)系,通過散點(diǎn)圖發(fā)現(xiàn)變量之間的相關(guān)性強(qiáng)度、是否存在線性關(guān)系等,下面這篇文章主要給大家介紹了關(guān)于R語言數(shù)據(jù)可視化包ggplot2畫圖之散點(diǎn)圖的基本畫法,需要的朋友可以參考下2022-11-11