在學(xué)習(xí)了R語(yǔ)言的向量和矩陣之后,本文將詳細(xì)介紹R語(yǔ)言中的另外一個(gè)數(shù)據(jù)對(duì)象——數(shù)組。
在R語(yǔ)言中,可以認(rèn)為數(shù)組是矩陣的擴(kuò)展,它將矩陣擴(kuò)展到2維以上。
如果給定的數(shù)組是1維的則相當(dāng)于向量,2維的相當(dāng)于矩陣。
R語(yǔ)言中的數(shù)組元素的類(lèi)型也是單一的,可以是數(shù)值型,邏輯型,字符型或復(fù)數(shù)型等。
1、數(shù)組的創(chuàng)建
在R語(yǔ)言中,數(shù)組使用array()函數(shù)創(chuàng)建。array()函數(shù)的原型如下:
array( data = NA, dim = length(data),dimnames = NULL)
參數(shù)中,data為創(chuàng)建數(shù)組的元素;dim為數(shù)組的維數(shù),是數(shù)值型向量;dimnames各維度中名稱(chēng)標(biāo)簽列表。
下面給出幾個(gè)具體的例子:
arr <- array(1:10) #相當(dāng)于1維的向量:1 2 3 4 5 6 7 8 9 10
arr <- array(1:10,dim=c(2,5)) #相當(dāng)于2行5列的矩陣
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
arr <- array(1:24, dim=c(3,4,2)) #闖將了一個(gè)3×4×2維的數(shù)組
其結(jié)果如下:

這里創(chuàng)建的數(shù)組第1維有3個(gè)水平,第2維有4個(gè)水平,第3維有2個(gè)水平
在創(chuàng)建數(shù)組時(shí)可以給數(shù)組的每一維的每個(gè)水平取名字:
> dim1<-c("A1","A2","A3")
> dim2<-c("B1","B2","B3")
> dim3<-c("C1","C2")
> arr<-array(1:18,dim=c(3,3,2),dimnames=list(dim1,dim2,dim3))
這里使用列表創(chuàng)建了數(shù)組各維度標(biāo)簽名稱(chēng),關(guān)于列表的使用,請(qǐng)參見(jiàn):R語(yǔ)言中列表對(duì)象的使用。
其結(jié)果形式如下:

2、數(shù)組的索引
R語(yǔ)言中對(duì)數(shù)組元素的索引與矩陣相似(關(guān)于矩陣的索引方法,可參考《R語(yǔ)言中矩陣的使用》),這里舉幾個(gè)例子:
arr[2,3,1] # 獲取單個(gè)元素的值:8
arr[2,1,] #獲取第1個(gè)維度的第2個(gè)水平和第2個(gè)維度的第1個(gè)水平的所有元素值
arr[2,,] #獲取第1個(gè)維度的第2個(gè)水平的所有組合元素值
arr[,2,] #獲取第2個(gè)維度第2個(gè)水平的所有組合元素值
arr["A2","B3","C2"] #通過(guò)水平名稱(chēng)的組合來(lái)獲取元素值

arr[1:3,c(1,3),]

3、數(shù)組的編輯
與矩陣相似,這里僅舉幾個(gè)例子來(lái)說(shuō)明一下:
(1)修改數(shù)組元素值
arr[2,3,1] <- 18
arr[2,3,] <- c(110,111)

arr[,2,] <- c(333,444,555,666,777,888)

arr[,,-2] #排除第3個(gè)維度第2個(gè)水平的元素,不是刪除,只是不訪(fǎng)問(wèn)這一水平而已
(3)刪除數(shù)組的水平
參考矩陣中的具體應(yīng)用,這里不再贅述。
4、數(shù)組的常用運(yùn)算
可以使用+,-,*,/進(jìn)行運(yùn)算。
(完)
新聞熱點(diǎn)
疑難解答