2013-06-04 17 views
9

Ho eseguito il seguente in R e ha ricevuto la stessa uscita per entrambi matrix() e as.matrix() e ora non sono sicuro quale sia la differenza tra loro è:Qual è la differenza tra matrix() e 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

Leggere la documentazione. Ad esempio, confronta l'output di 'DF <- data.frame (a = 1: 5, b = 6: 10); as.matrix (DF); matrice (DF) '. – Roland

+1

sì, ma non mi occupo di data.frame, ad esempio la mia matrice è solo dati numerici. –

+2

Hai chiesto la differenza tra queste funzioni. La differenza è documentata e ti ho mostrato un esempio. Che le funzioni possano (in circostanze specifiche) dare lo stesso risultato non ha alcun impatto sulla risposta alla tua domanda. – Roland

risposta

9

matrix prende data e ulteriori argomenti nrow e 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 è un metodo con comportamenti diversi per i diversi tipi, ma soprattutto di restituire un n * m matrice da un ingresso m 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. 

La differenza deriva principalmente dalla forma dell'ingresso, matrix non si preoccupa forma, as.matrix fa e manterrà (anche se i dettagli dipendono i metodi attuali per l'ingresso, in vostro caso un vettore adimensionale corrisponde ad una singola matrice colonna.) non importa se l'ingresso è crudo, logico, integer, numerico, carattere, o complessa, ecc

4

matrixcostrutti una matrice dalla sua prima argomento, con un dato numero di righe e colonne. Se l'oggetto fornito non è abbastanza grande per l'output desiderato, matrix ricicla i suoi elementi: ad esempio, matrix(1:2), nrow=3, ncol=4). Viceversa, se l'oggetto è troppo grande, gli elementi in eccesso verranno eliminati: ad esempio, matrix(1:20, nrow=3, ncol=4).

as.matrixconverte il primo argomento in una matrice, le cui dimensioni verranno dedotte dall'input.

0

matrice crea una matrice dal set di valori specificato. as.matrix tenta di trasformare il suo argomento in una matrice.

Inoltre, Matrix() fa sforzi per mantenere logiche matrici logiche, cioè per determinare matrici appositamente strutturate come quelle simmetriche, triangolari o diagonali. as.matrix è una funzione generica. Il metodo per i frame di dati restituirà una matrice di caratteri se sono presenti solo colonne atomiche e qualsiasi colonna non numerica/logica/complessa, applicando as.vector a fattori e formato ad altre colonne non di caratteri. Altrimenti, sarà utilizzata la gerarchia coercizione solito (logica < intero < doppia < complesso), ad esempio, tutti i-logici trame di dati sarà costretta ad una matrice binaria, misto logico-intero darà una matrice numero intero, ecc

Il metodo predefinito per as.matrix chiama as.vector (x), e quindi ad es costringe i fattori a vettori di caratteri.

Problemi correlati