nrow (Matrix) -Funktion

8

Ich habe eine Zuweisung mit R und habe ein kleines Problem. In der Zuweisung müssen mehrere Matrizen mit einer zufälligen Anzahl von Zeilen erzeugt und später für verschiedene Berechnungen verwendet werden. Alles funktioniert perfekt, es sei denn, die Anzahl der Zeilen ist 1.

In den Berechnungen verwende ich nrow (matrix) auf verschiedene Arten, zum Beispiel if (i <= nrow(matrix) ) {action} und auch Aussagen wie matrix[,4] und so weiter.

Wenn also die Anzahl der Zeilen 1 ist (ich weiß, dass es tatsächlich ein Vektor ist), gebe R Fehler, definitiv weil nrow (1-dimensionale Matrix) = NULL. Gibt es einen einfachen Weg, damit umzugehen? Ansonsten muss wohl der ganze Code neu geschrieben werden, aber ich bin sehr kurz in der Zeit: (

    
Michinio 12.05.2012, 10:08
quelle

2 Antworten

4

Nennen wir Ihren Vektor x . Verwenden Sie matrix(x) oder t(matrix(x)) , um es in eine richtige (2D-) Matrix zu konvertieren.

    
NPE 12.05.2012, 10:18
quelle
7

Es ist nicht so, dass einreihige / col-Matrizen in R ncol / nrow auf NULL setzen - in R ist alles ein 1D-Vektor, der sich wie eine Matrix verhalten kann (dh als Matrix anzeigen, akzeptieren) Matrixindizierung usw.), wenn ein dim -Attribut gesetzt ist. Es scheint anders, weil das einfache Indizieren einer Matrix auf eine einzelne Zeile oder Spalte %

Damit können Sie Ihr Ziel erreichen, indem Sie entweder dim -Attribut eines Vektors (z. B. x) direkt neu erstellen:

%Vor%

ODER indem verhindert wird, dass dim operator [] durch Hinzufügen von dim Argument:

verliert %Vor%     
mbq 12.05.2012 11:34
quelle

Tags und Links