Không có sự khác biệt giữa một matrix
và 2D array
:
> x <- matrix(1:10, 2)
> y <- array(1:10, c(2, 5))
> identical(x, y)
[1] TRUE
...
matrix
chỉ là một nhà xây dựng thuận tiện hơn, và có nhiều chức năng và phương pháp mà chỉ chấp nhận mảng 2D (ma trận a.k.a.).
Bên trong, mảng chỉ là vector với một thuộc tính kích thước:
...
> attributes(x)
$dim
[1] 2 5
> dim(x) <- NULL
> x
[1] 1 2 3 4 5 6 7 8 9 10
> z <- 1:10
> dim(z) <- c(2, 5)
> is.matrix(z)
[1] TRUE
Để trích dẫn language definition:
Ma trận và mảng chỉ đơn giản là vector với các thuộc tính dim
và tùy dimnames
gắn liền với vector.
[...]
Thuộc tính dim
được sử dụng để triển khai mảng. Nội dung của mảng được lưu trữ trong vectơ theo thứ tự cột lớn và thuộc tính dim
là một vectơ các số nguyên chỉ định khoảng cách tương ứng là mảng. R đảm bảo rằng độ dài của vector là sản phẩm của độ dài của các kích thước. Độ dài của một hoặc nhiều kích thước có thể bằng không.
Vectơ không giống với mảng một chiều vì sau có thuộc tính mờ của độ dài một, trong khi giá trị cũ không có thuộc tính mờ .
"... mảng nội bộ chỉ là vectơ ...." - làm thế nào về thực tế là hàm lớp cho kết quả khác nhau cho vectơ và mảng một chiều? –
Câu hỏi của bạn là gì? Có các lớp ẩn trong R. – Roland
@Roland Có lẽ bạn nên chỉnh sửa câu trả lời của bạn để bao gồm các chi tiết này về "có các lớp ngầm". Có thể hữu ích khi có giải thích đầy đủ về cách sử dụng các hàm như 'class()', 'mode()' và 'typeof()' để cuối cùng xác định sự khác biệt giữa vectơ, mảng và ma trận, v.v. – nbro