2017-05-26 13 views
0

行列から配列を作成しようとしています。行列はすべて同じ次元(N×N)です。私はヘッダーのない単一のcsvファイルにすべての行列を持っています。データはタブで区切られます。それは次のようにそれを行うことが示唆された他のスレッドで :R:リストから行列の配列を作成する

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

しかし、これは私が欲しいものを作成しません。これにより、2次元Nx(N * k)データフレームが作成されます(N =列/行、k =行列の数)。 私の場合、5つの行列、40の列、40の行があります。 abindを使用すると、[1:40、1:200]データフレームが作成されます。私が欲しいもの

> 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" ... 

は[1時40分、1時40分、1:5]は行列の3次元配列:

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

私は私の根本的な問題は、私は管理できないということだと思いますnamed.listのデータフレームのリストを行列のリストに変換します。

答えて

0

あなたが使用することができます。

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

が、私はそれを解決し、 "abind" 私は親しま。次の行が欠落していました:

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

これは私を与える:

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

abindは、移動するための方法です。 rbindlistをあらかじめ使用していた場合、個々のデータセットの構造が乱雑になります。

関連する問題