R語言矩陣維度「消失」的問題

2022-06-05 15:18:09 字數 1122 閱讀 7408

矩陣(matrix)是r語言中很基礎的一種資料結構,也是r語言使用者經常使用的一種資料結構。矩陣的維度一般為二維(m*n)。

r語言中矩陣的操作是非常簡單易懂的,但是在對r語言做矩陣操作時,有個地方需要特別注意。下面我們通過乙個例子說明。

首先,我們建立乙個用於測試的矩陣。

test1 <- matrix(data = c(1:6), nrow = 3, ncol = 2, dimnames = list(c("row1", "row2", "row3"), c("col1", "col2")))

然後我們檢視下這個矩陣,矩陣是乙個三行兩列的矩陣。

> test1

col1 col2

row1 1 4

row2 2 5

row3 3 6

然後,我們任意取出它們的子矩陣並使用dim()函式檢視子矩陣的維度。

> dim(test1[1:2, ]); test1[1:2, ]

[1] 2 2

col1 col2

row1 1 4

row2 2 5

> dim(test1[2, ]); test1[2, ]

null

col1 col2

2 5

我們發現第一次取出某個維度為2*2的子矩陣時,系統正確返回了子矩陣的維度,而當我們第二次取出乙個維度為1*2的子矩陣時,系統卻未能正確返回子矩陣的維度且維度為null。很顯然,r語言將這個子矩陣當成向量處理了,因此維度也「消失」了。這個是非常需要注意的,筆者日常使用r語言分析資料的時候,也不經意間落入過這個「圈套」,有時候感覺**邏輯上沒有任何的錯誤,但當執行程式的時候,就會出現這個某個令人不解的error,然後需要花上一點時間慢慢debug,然後恍然大悟,原來是這個原因。

解決或者說避免出現這個問題也是非常簡單的,我們可以直接使用drop引數。

> # using the drop parameter

> dim(test1[2, , drop = false])

[1] 1 2

我們可以看到,將drop引數設為false之後,r語言能夠正確返回矩陣的維度了。

R語言 矩陣的基礎運算

先建立乙個2 5的矩陣a x c 1 10 a matrix x,ncol 2,nrow 5,byrow t a 1 2 1,1 2 2,3 4 3,5 6 4,7 8 5,9 10再建立乙個矩陣b x c 1 10 b matrix x,ncol 2,nrow 5 b 1 2 1,1 6 2,2 ...

R語言 矩陣的基礎用法

矩陣 1.定義矩陣 m matrix c 1 10 nrow 2,ncol 5 這裡的第乙個nrow為行,ncol為列數。但是陣列的數量必須與矩陣的第乙個引數的數目相同,同時行數和列數只要列出乙個就可以 m matrix c 1 10 nrow 2 m matrix c 1 10 ncol 5 這裡...

R語言 matrix生成矩陣

主要介紹一下利用matrix函式和rep生成矩陣 在r語言中可以使用matrix 函式來建立矩陣,其語法格式如下 matrix data na,nrow 1,ncol 1,byrow false,dimnames null 引數含義如下 data 矩陣的元素,預設為na,即未給出元素值的話,各項為n...