2015-11-29 33 views
14

R, homojen nesnelerin listesini saklamak için üç türle birlikte gelir: vector, matrix ve array.Vektör, matris ve dizi veri türleri arasındaki farklar nelerdir?

Bildiğim kadarıyla söyleyebilirim:

  • vector 1 boyut diziler
  • matrix 2 boyutları diziler
  • için özel bir durumudur için özel durumları olan
  • array da (1 dahil herhangi bir boyut seviyesine sahip olabilir ve 2).

1D dizilerini vektörler ve 2B dizileri matrisler üzerinde kullanma arasındaki fark nedir? Bunlar arasında döküm yapmalı mıyız yoksa otomajik mi olacak? Bir matrix ve 2D array arasında hiçbir fark yoktur

cevap

19

:

> x <- matrix(1:10, 2) 
> y <- array(1:10, c(2, 5)) 
> identical(x, y) 
[1] TRUE 
... 

matrix sadece daha uygun yapıcı ve sadece 2D diziler (nam-ı diğer matrisler) kabul birçok fonksiyonlar ve yöntemler vardır. sadece ekli öznitelik dim ve isteğe bağlı olarak dimnames ile vektörleri

matrisler ve diziler:

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

language definition rsak:

Dahili olarak, diziler gibi bir boyut özelliği ile vektörler vektör.

[...]

dim nitelik dizileri uygulamak için kullanılır. dizisinin içeriği bir sütunda büyük siparişte depolanır ve dim özniteliği dizisinin ilgili uzantılarını belirten bir tamsayı vektörüdür. R, vektörün uzunluğunun, boyutların uzunlukları olan ürünü olmasını sağlar. Bir veya daha fazla boyutun uzunluğu sıfır olabilir.

Bir vektör, bir , bir sıfırlık öznitelik uzunluğuna sahipken, birincisi özniteliğine sahip olmadığından, tek boyutlu bir dizi ile aynı değildir.

+1

"... İç diziler sadece vektörlerdir ...." - sınıf fonksiyonunun vektör ve bir boyut dizisi için farklı sonuçlar verdiği gerçeğine ne dersiniz? –

+0

Sorunuz nedir? R. – Roland

+0

@Roland'de örtük sınıflar vardır. Belki de cevabınızı "örtülü sınıflar vardır" ayrıntılarını içerecek şekilde düzenlemelisiniz. Vektörler, diziler ve matrisler arasındaki farkı belirlemek için 'class()', 'mode()' ve 'typeof()' gibi fonksiyonların nasıl kullanılacağı hakkında kapsamlı bir açıklamaya sahip olmak yararlı olabilir. – nbro

İlgili konular