Wie konvertiert man einen Datenrahmen von Integer64-Werten in eine Matrix?

8

Ich habe einen Datenrahmen, der ausschließlich aus integer64 Spalten besteht Ich möchte konvertieren, um eine Matrix zu sein.

%Vor%

Leider as.matrix gibt nicht die richtige Antwort.

%Vor%

Das Problem scheint zu sein, dass integer64 -Werte als numerische Werte mit einem "integer64" -Klassenattribut gespeichert sind (plus etwas Magie, damit sie richtig gedruckt und arithmetisch ausgeführt werden), das um as.matrix entfernt wird.

Ich kann nicht einfach class(m) <- "integer64" ausführen, weil das die Klasse des Matrixobjekts und nicht seinen Inhalt ändert.

Ebenso liefert mode(m) <- "integer64" die falsche Antwort und typeof(m) <- "integer64" und storage.mode(m) <- "integer64" wirft Fehler.

Natürlich könnte ich das Problem einfach umgehen, indem ich die Spalten in Double umwandle ( dfr$x <- as.double(dfr$x) ), aber es fühlt sich an, als müsste es eine Möglichkeit geben, das richtig zu machen.

Wie kann ich eine Matrix von integer64 -Werten erhalten?

    
Richie Cotton 01.02.2015, 11:43
quelle

1 Antwort

4

Bei einem rohen Vektor scheint die direkte Zuweisung des Attributs dim zu funktionieren:

%Vor%

Für einen Datenrahmen funktioniert cbind in den Spalten auch:

%Vor%

Also, für eine beliebige Anzahl von Spalten ist do.call der richtige Weg:

%Vor%     
Hong Ooi 01.02.2015, 15:29
quelle

Tags und Links