2014-01-20 3 views
1

У меня есть список, содержащий в нем 100 списков, каждый из которых имеет 552 числовых значений. Как выполнить последовательное извлечение 1-го значения (и так далее до 552) из ​​каждого из 100 списков?Подмножество данных: списки внутри списка в R

Пример: 5 перечислены в пределах списка, содержащего число 1-10

list(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), c(1, 2, 3, 4, 5, 6, 7, 
8, 9, 10), c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), c(1, 2, 3, 4, 5, 
6, 7, 8, 9, 10), c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) 

Я хочу, чтобы извлечь каждый термин последовательно т.е. 1,1,1,1,1, а затем 2,2,2, 2,2 и так далее

+0

Можете привести небольшой пример (например, 10-й из ваших фактических данных) с указанием ожидаемого результата. – A5C1D2H2I1M1N2O1R2T1

+0

вы можете перебирать список по ключу, а затем перебирать объект внутреннего списка. – shakthydoss

+0

Возможно, что-то вроде этого вопроса: http://stackoverflow.com/questions/16179197/transpose-a-list-of-lists –

ответ

0

Это утверждение создает список векторов, взяв первый элемент каждого из исходных векторов, второго элемента и т.д., что дает NA для значения короткого вектора:

num <- max(unlist(lapply(x, length))) ## Length of the longest vector in x 

lapply(seq(num), function(i) unlist(lapply(x, `[`, i))) 

А вот матричный подход:

matrix(unlist(x), ncol=length(x)) 

Строки этой матрицы являются вашими элементами. Это зависит от того, что каждый вектор имеет одинаковую длину.

+0

Cheers Matthew - я был в высшей степени глупым; преобразование в матрицу решало все мои проблемы !!! – Kvothe

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