Я пытаюсь найти способ написать цикл (или функцию, похожую на применение), которая берет конкретную строку из матрицы в списке, записывает ее в кадр матрицы / данных, берет соответствующую строку изследующий элемент списка и помещает его после предыдущего в той же строке.
Это включает в себя вложенный список, который имеет пять матриц в первой части, пять в следующей части и так далее.Каждый кусок матрицы может варьироваться по количеству столбцов с минимумом шесть и максимум восемь.Всегда есть четыре ряда.В приведенном ниже примере матрицы 4x6 в первой части и матрицы 4x8 во второй части.
set.seed(100)
test.df <- data.frame(matrix(1:440,nrow=40,ncol=11))
mat1 <- matrix(rnorm(24),nrow=4,ncol=6)
mat2 <- matrix(rnorm(24),nrow=4,ncol=6)
mat3 <- matrix(rnorm(24),nrow=4,ncol=6)
mat4 <- matrix(rnorm(24),nrow=4,ncol=6)
mat5 <- matrix(rnorm(24),nrow=4,ncol=6)
mat6 <- matrix(rnorm(32),nrow=4,ncol=8)
mat7 <- matrix(rnorm(32),nrow=4,ncol=8)
mat8 <- matrix(rnorm(32),nrow=4,ncol=8)
mat9 <- matrix(rnorm(32),nrow=4,ncol=8)
mat10 <- matrix(rnorm(32),nrow=4,ncol=8)
test.list1 <- list(mat1,mat2,mat3,mat4,mat5)
test.list2 <- list(mat6,mat7,mat8,mat9,mat10)
list.f <- list(test.list1,test.list2)
res.mat <- matrix(nrow=2,ncol=40)
# (Edit) Example of expected results
res.mat[1,1:6] <- mat1[1,]
res.mat[1,9:14] <- mat2[1,]
res.mat[2,1:8] <- mat6[1,]
res.mat[2,9:16] <- mat7[1,]
res.mat
final.res <- cbind(test.df,res.mat)
final.res
Первая строка каждой матрицы в первом списке вложенного списка занимает первую строку res.mat.В первом ряду res.mat будет шесть записей, пропущены два столбца (оставляя NA), а затем следующие шесть записей и так далее.Во второй строке res.mat будет восемь записей, затем следующие восемь и так далее.После заполнения res.mat я добавлю его в test.df в качестве окончательного результата.test.df заполнен серией чисел в качестве заполнителей.
У меня более двух элементов списка более высокого уровня, но для воспроизводимости я включил только два.Когда он обрабатывает все мои данные, в конечном кадре данных будет 2916 элементов списка и 2916 строк.Буду очень признателен за любые идеи о том, как мне это сделать, и, пожалуйста, спросите, могу ли я что-нибудь уточнить с помощью кода или описания.