2017-05-26 163 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]矩陣的三維數組:

> 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,那麼單個數據集的結構會變得混亂。