У меня есть список, в котором каждый элемент списка содержит другой список с несколькими объектами имен. Каждый из этих названных объектов представляет собой вектор той же длины. Моя цель - эффективно объединить связанные объекты (одноименные) в матрицу путем конкатенирования векторов.Связанные с объединением вложенные векторы элементов вложенных элементов в матрицы
Вот пример типа структуры, с которой я работаю. Однако в текущем приложении он поступает из mclapply, так как это параллельная многоуровневая модель, и я не думаю, что есть способ получить список списков.
> test=lapply(1:2,function(x){out = list(); out$t=rnorm(3)+x; out$p =rnorm(3)+ x+.1; return(out)})
> test
[[1]]
[[1]]$t
[1] 0.5950165 0.8827352 0.5614947
[[1]]$p
[1] 2.6144102 1.9688743 0.6241944
[[2]]
[[2]]$t
[1] 2.562030 1.832571 3.018756
[[2]]$p
[1] 1.7431969 0.5305784 2.6935106
Вот грубый способ сделать то, что я хочу
> t.matrix = cbind(test[[1]]$t,test[[2]]$t)
> t.matrix
[,1] [,2]
[1,] 2.2094525 2.634907
[2,] -0.2822453 2.440666
[3,] 1.1704518 2.483424
, но вместо этого я хотел бы быть в состоянии сделать это для очень длинного списка (около 1 млн элементов), и мой текущий решение не масштабируется.
Я полагаю, что я мог бы использовать цикл for, но кажется, что должен быть лучший способ сделать это с умным использованием сокращения или unlist или sapply или что-то в этом роде.
Это всегда приятно, когда вы передаете эти виды вопросов использовать 'set.seed()', чтобы мы могли сравнить полученный результат с тем, что вы намереваетесь получить. – A5C1D2H2I1M1N2O1R2T1
Спасибо за указатель! Я обязательно сделаю это в будущем. –