2013-06-04 12 views
9

Pobiegłem następujące w badania i otrzymali taką samą moc zarówno matrix() i as.matrix() i teraz nie jestem pewien, jaka jest różnica między nimi jest:Jaka jest różnica między matrix() i as.matrix() in r?

> a=c(1,2,3,4) 
> a 
[1] 1 2 3 4 
> matrix(a) 
    [,1] 
[1,] 1 
[2,] 2 
[3,] 3 
[4,] 4 
> as.matrix(a) 
    [,1] 
[1,] 1 
[2,] 2 
[3,] 3 
[4,] 4 
+4

Przeczytaj dokumentację. Np. Porównaj dane wyjściowe z 'DF <- data.frame (a = 1: 5, b = 6: 10); as.matrix (DF); matrix (DF) '. – Roland

+1

tak, ale nie mam do czynienia z data.frame, tj. Moja macierz jest tylko danymi liczbowymi. –

+2

Pytasz o różnicę między tymi funkcjami. Różnica jest udokumentowana i pokazałem ci przykład. To, że funkcje mogą (w określonych okolicznościach) dawać taki sam wynik, nie ma wpływu na odpowiedź na twoje pytanie. – Roland

Odpowiedz

9

matrix trwa data i kolejne argumenty nrow i ncol.

?matrix 
If one of ‘nrow’ or ‘ncol’ is not given, an attempt is made to 
infer it from the length of ‘data’ and the other parameter. If 
neither is given, a one-column matrix is returned. 

as.matrix jest metodą z różnych zachowań dla różnych rodzajów, lecz przede wszystkim oddać n * m z m macierzy wejścia n *.

?as.matrix 
‘as.matrix’ is a generic function. The method for data frames 
will return a character matrix if there is only atomic columns and 
any non-(numeric/logical/complex) column, applying ‘as.vector’ to 
factors and ‘format’ to other non-character columns. Otherwise, 
the usual coercion hierarchy (logical < integer < double < 
complex) will be used, e.g., all-logical data frames will be 
coerced to a logical matrix, mixed logical-integer will give a 
integer matrix, etc. 

Różnica między nimi pochodzi przede wszystkim od kształtu wejściu, matrix nie dba o kształcie, as.matrix robi i będzie ją utrzymywać (choć szczegóły zależą od aktualnych metod wejścia, aw sprawa bezwymiarową wektor odpowiada jednej matrycy kolumnowej). nie ma znaczenia, czy sygnał wejściowy jest surowy, logiczne całkowitą numeryczna, postać lub kompleks itp

4

matrixkonstruuje matrycę z jego pierwszą argument, z podaną liczbą wierszy i kolumn. Jeśli dostarczony obiekt nie jest wystarczająco duży dla żądanego wyjścia, to przetwarza jego elementy: na przykład matrix(1:2), nrow=3, ncol=4). I odwrotnie, jeśli obiekt jest zbyt duży, wówczas nadmiarowe elementy zostaną usunięte: na przykład matrix(1:20, nrow=3, ncol=4).

as.matrixkonwertuje swój pierwszy argument do macierzy, którego wymiary zostaną wywnioskowane z danych wejściowych.

0

Macierz tworzy macierz z podanego zestawu wartości. as.matrix próbuje przekształcić swój argument w macierz.

Co więcej, Matrix() dokłada starań, aby logiczne macierze były logiczne, tj. Oraz aby określić specjalnie zbudowane macierze, takie jak symetryczne, trójkątne lub diagonalne. as.matrix jest funkcją ogólną. Metoda ramek danych zwróci macierz znaków, jeśli istnieją tylko kolumny atomowe i dowolna kolumna inna niż (numeryczna/logiczna/złożona), stosując as.vector do współczynników i formatując do innych kolumn nie będących znakami. W przeciwnym razie, zwykle hierarchia przymus (logiczne < całkowitą < dwukrotnie < kompleks) będą stosowane, na przykład, wszystkie logiczny ramki danych będzie zmuszany do logicznej matrycy, miesza się całkowitą logicznego daje matrycy całkowitą itp

Domyślna metoda wywoływania as.matrix as.vector (x), a więc np wymusza czynniki na wektorach znaków.

Powiązane problemy