2017-02-20 79 views
0

如何將data.table與元數據的文件名和存儲每個組在list -item?data.table聚合的輸出列表

輸入:

DT <- data.table(files = 1:10, meta = c(rep(1, 6), rep(2,4))) 

我想的是這樣的:

MyList <- DT[, files, by = meta] #something like that 

所需的輸出:

[[1]] 
[1] 1 2 3 4 5 6 

[[2]] 
[1] 7 8 9 10 

上面的例子是在該元的情況下簡化實際上是m礦石列(分組)以及之前選擇的某些行。 有一個簡單的方法去(最好一data.table溶液),或做我必須使用像

lapply(unique(DT$meta), function(x) DT[meta == x]$files) 

一些其他的方式?

+0

爲什麼你認爲你需要這個輸出? – Roland

+0

要讀取每個列表項中的每個文件,並在更多步驟中分離處理它。我知道可以使用類似'DT [,sapply(files,read.csv),by = meta]'或類似方式處理data.table中的文件,但如果有很多步驟而不是''read.csv''。 – Phann

回答

1

我們可以把它包裝在list

DT1 <- DT[, .(files = list(files)), meta] 
DT1$files 
#[[1]] 
#[1] 1 2 3 4 5 6 

#[[2]] 
#[1] 7 8 9 10 
+1

知道如何...總是那麼簡單... – Phann