R語言中編輯矩陣中元素的方法

2021-10-22 06:16:59 字數 1422 閱讀 8297

在實際資料處理過程中,我們有時需要對資料中的元素進行修改,或刪除矩陣中的某一行或某一列,甚至需要將兩個矩陣進行合併。本文將介紹在r語言中如何實現對矩陣元素的修改操作。

以下的操作都是基於這樣的乙個矩陣:

m1 <- matrix(c(1:6), nrow=2, ncol=3, dimnames = list(c(「r1」, 「r2」), c(「c1」, 「c2」, 「c3」)))

在r語言中,主要通過以下幾種形式來修改矩陣中的元素值。

m1[1,2] = 12 #將矩陣m1中第1行第2個元素的值修改為12

m1[「r2」,「c2」] = 22 #將矩陣m1中行名稱為r2與列名稱c2交叉處的元素值修改為22

m1[2,] = c(21,22,23) #將矩陣第2行的資料修改為21,22,23

m1[「r1」 ,] = c(11:13) #將矩陣名稱為r1的行的資料修改為11 ,12, 13

m1[1, ] = 0 #將矩陣m1的第一行的資料都修改為0

m1[, 1] = c(11,21) #將矩陣的第一列資料修改為11,21

m1[, 「c2」] = c(221,222) #將矩陣中名為c2的列資料改為221,222

m1[,3 ] = 333 #將矩陣第3列的資料都修改為333

注意下面這種情況:

ma <- (1:16, nr=4) #建立名為ma的矩陣,共4行4列

輸出[,1] [,2] [,3] [,4]

[1,] 1 5 9 13

[2,] 2 6 10 14

[3,] 3 7 11 15

[4,] 4 8 12 16

修改第2列的資料:

ma[,2] = c(12,22) #這樣,向量的資料可以重複以補齊到與矩陣ma的行數相同

即第2列的資料變為 12 22 12 22

但是如果向量中提供的元素個數不能被替換物件的維數整除的話,會報錯,也就是說這裡要替換的列元素有4個,提供了2個,2能被4整除,則其通過重複迴圈向量2次可以將矩陣列元素補齊,但如提供的向量元素有3個的話,會給出「被替換的專案不是替換值長度的倍數」的錯誤。即對於ma矩陣,其行或列給出替換的元素個數只能是1或2或4,其餘會報錯。

m1 <- m1[-2,] #刪除第2行

m1 <- m1[,-2] #刪除第2列

m2<- m2[-1,-2] #刪除矩陣的第1行以及第2列

注意,上面使用了給矩陣重新賦值的方式,否則不能實現刪除操作,僅是訪問。

可以使用上面所說的rbind和cbind函式進行合併

m1<-rbind(m1,c(31,32,33)) #將向量按行合併到矩陣m1中

m1<-cbind(m1,c(44,45)) #將向量按列合併到矩陣m1中

同樣,上面給出的向量元素不足時,迴圈使用,同樣當元素個數不足時,其提供的元素個數應能被對應的行維或列維除盡,即列數或行數需是所提供的元素個數的整數倍。

R語言中矩陣的常規操作

1 生成矩陣,使用matrix函式 set.seed 111 設定隨機數種子 vect sample 1 10,16,replace t vect 1 439 53810 11048 10981 7 dat matrix vect,nrow 4,ncol 4,byrow t,生成4行4列矩陣,矩陣行...

C語言中元素訪問之陣列

今天在寫stm32程式時,出現了乙個小問題,現在記錄下來,應該說是自己的c語言基本功不行。加油吧 首先,傳送函式的定義 1 void rs485 put bytes uint8 buf,uint32 len 所訪問的結構體的定義 typedef struct canrxmsg 定義乙個結構體變數 1...

矩陣中元素值的判斷

1.any 函式 判斷乙個矩陣裡是否有非零元素,如果有,返回1,如果沒有,返回0 2.all 函式 b all a 或b all a,dim 判斷乙個矩陣裡是否全為非零元素,如果是,返回1,如果不是,返回0 判斷矩陣中的值是否都大於某個值n all a n 3.isequal函式 tf isequa...