2015-11-29 37 views
14

R đi kèm với ba loại để lưu trữ danh sách các đối tượng đồng nhất: vector, matrixarray.Sự khác nhau giữa các loại dữ liệu véc tơ, ma trận và mảng là gì?

Theo như tôi có thể nói:

  • vector là trường hợp đặc biệt cho 1 mảng chiều
  • matrix là một trường hợp đặc biệt đối với 2 kích thước mảng
  • array cũng có thể có bất cứ nguyên cấp (bao gồm 1 và 2).

Sự khác nhau giữa việc sử dụng mảng 1D trên vectơ và mảng 2D trên ma trận là gì? Chúng ta có cần phải đúc giữa những thứ đó, hay nó sẽ xảy ra tự động?

Trả lời

19

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ờ .

+1

"... 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? –

+0

Câu hỏi của bạn là gì? Có các lớp ẩn trong R. – Roland

+0

@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

Các vấn đề liên quan