Sự khác biệt giữa Ma trận lớn Ma trận và Ma trận số thông thường là gì?


8

Khi một ma trận tương đối lớn được tạo ra, Rstudio đánh dấu nó là một Ma trận lớn trong cửa sổ môi trường của nó:

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

Hàm mode () như mong đợi trả về "số" cho đối tượng này:

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

Tuy nhiên, nếu tôi chạy lệnh sau:

mode(x) <- "numeric"

Rstudio thay đổi "Ma trận lớn" thành ma trận số thông thường:

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

Vậy sự khác biệt giữa 2 đối tượng này là gì? Sự khác biệt này chỉ tồn tại trong Rstudio hay hai đối tượng này cũng khác nhau trong R?

Câu trả lời:


1

Theo hiểu biết của tôi, "Ma trận lớn" và matrixlà cùng một đối tượng ma trận. Vấn đề là làm thế nào những đối tượng này được hiển thị trong môi trường toàn cầu trong RStudio.

RStudio cũng phân biệt giữa vectơ và vectơ lớn. Hãy xem xét các vectơ sau:

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

Vector này được liệt kê như một vector lớn. Bây giờ, hãy giảm kích thước của nó xuống một:

v2 <- rnorm(n*n-6)

Đột nhiên, nó trở thành một vector bình thường. Cấu trúc của cả hai đối tượng là như nhau (có thể được xác minh bằng cách chạy str). Lớp học và chế độ lưu trữ của họ cũng vậy. Thế thì có gì khác? Lưu ý rằng kích thước của v2bộ nhớ chính xác là 512 Kb.

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

Kích thước của v1hơi lớn hơn một chút:

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

Theo như tôi hiểu (sửa tôi nếu tôi sai), để thuận tiện, RStudio hiển thị các đối tượng lớn hơn 512 kB khác nhau.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.