2017-05-26 3 views
0

Ich versuche, ein Array aus Matrizen zu erstellen. Die Matrizen haben alle identische Dimensionen (N × N). Ich habe jede Matrix in einer einzigen CSV-Datei ohne Header. Daten sind tabulatorgetrennt. In anderen Threads wurde vorgeschlagen, es zu tun, wie folgt:R: Erstellen Sie ein Array von Matrizen aus einer Liste

temp = list.files(pattern="*.csv") 
named.list <- lapply(temp, read.csv,header=FALSE, sep = "") 
arr <- abind(named.list) 

Daraus folgt jedoch nicht, was ich will. Dies erzeugt einen 2-dimensionalen Nx (N · k) Datenrahmen (wobei N = Spalten/Zeilen und k = Anzahl der Matrizen). Also in meinem Fall habe ich 5 Matrizen, 40 Spalten und 40 Zeilen. Die Verwendung von abind erzeugt einen [1:40, 1: 200] Datenrahmen.

> str(arr) 
int [1:40, 1:200] 0 1 0 0 0 0 0 0 0 0 ... 
- attr(*, "dimnames")=List of 2 
    ..$ : NULL 
    ..$ : chr [1:200] "V1" "V2" "V3" "V4" ... 

Was ich will, ist ein [01.40, 01.40, 1: 5] dreidimensionale Anordnung von Matrizen:

> str(z) 
int [1:40, 1:40, 1:5] 0 1 0 0 0 0 0 0 0 0 ... 

Ich glaube, mein grundsätzliches Problem ist, dass ich es nicht schaffen kann Konvertieren Sie die Liste der Datenrahmen in named.list in eine Liste von Matrizen.

Antwort

0

Sie verwenden können:

library(data.table) 
arr <- rbindlist(named.list ,use.names = T,fill = T); 
0

ich es gelöst, bekam die "abind" schließen mich. Die folgende Zeile fehlte:

arr2<-array(arr,dim= c(40,40,5)) 

Das gibt mir:

str(arr2) 
int [1:40, 1:40, 1:5] 0 1 0 0 0 0 0 0 0 0 ... 

abind ist der Weg zu gehen. Wenn vorher die rbindlist verwendet wurde, wird die Struktur der einzelnen Datensätze durcheinander gebracht.

Verwandte Themen