2017-02-20 13 views
0

Как я могу группировать data.table, например. с именами файлов по метаданным и хранить каждую группу в list -этом?Выходной агрегат данных в виде списка

Вход:

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

Чтобы прочитать каждый файл в каждом элементе списка и обработать его отдельно во многих последующих шагах. Я знаю о возможности обрабатывать файлы в data.table с помощью чего-то вроде '' DT [, sapply (files, read.csv), by = meta] 'или подобным, но это было бы не очень полезно, если бы много шагов вместо '' 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

 Смежные вопросы

  • Нет связанных вопросов^_^