「ラージマトリックス」と通常の数値マトリックスの違いは何ですか?


8

比較的大きな行列が作成されると、Rstudioはその環境ウィンドウでそれを大きな行列としてマークします。

 x <- matrix(rnorm(10000 * 5000), ncol=5000)
 # Large matrix (50000000 elements, 381.5 Mb)

予想されるmode()関数は、このオブジェクトに対して「数値」を返します。

mode(x)
## [1] "numeric"

ただし、次のコマンドを実行した場合:

mode(x) <- "numeric"

Rstudioは「大きな行列」を通常の数値行列に変更します。

# x:  num [1:10000, 1:5000]

では、これらの2つのオブジェクトの違いは何ですか?この違いはRstudioにのみ存在しますか、それともこれら2つのオブジェクトはRでも異なりますか?

回答:


1

私の理解では、「大行列」とmatrix同じ行列オブジェクトです。重要なのは、これらのオブジェクトがRStudioのグ​​ローバル環境でどのように表示されるかです。

RStudioは、ベクトルと大きなベクトルも区別します。次のベクトルについて考えます。

n <- 256
v1 <- rnorm(n*n-5)

このベクターは大きなベクターとしてリストされています。次に、サイズを1つ減らします。

v2 <- rnorm(n*n-6)

突然、それは法線ベクトルになります。両方のオブジェクトの構造は同じです(を実行して確認できますstr)。クラスとストレージモードも同様です。それでは何が違うのですか?v2メモリ内のサイズが正確に512 KBであることに注意してください。

lobstr::obj_size(v2)
>524,288 B # or exactly 512 kB

のサイズv1は少し大きいです:

lobstr::obj_size(v1)
>524,296 B # or 512.0078125 KB

私が理解している限り(間違っている場合は訂正してください)、便宜上、RStudioは512 kBを超えるオブジェクトを異なって表示します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.