2017-02-20 81 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