Я пытаюсь объединить матрицы, хранящиеся во вложенных списках, и поместить их в новый список. Например, если у меня есть список фруктов, я хотел бы взять различные матрицы, хранящиеся в Kiwi
, и соединить их вместе как одну матрицу в новом списке.
Это сгенерирует что-то похожее на мои данные:
#Define some important things
Fruits = c('Mango', 'Kiwi')
Attr = c('Size', 'Shape')
#generate empty lists
MyFruitList <- lapply(Fruits, function(q) {
EmptySublist <- (setNames(vector("list", length(Fruits)), Attr))
})
names(MyFruitList) <- Fruits
#Full lists with example matrices
MyFruitList[['Mango']][['Size']] <- matrix(c(3,5,7,2), nrow=2, ncol=2)
MyFruitList[['Mango']][['Shape']] <- matrix(c(3,6,7,5), nrow=2, ncol=2)
MyFruitList[['Kiwi']][['Size']] <- matrix(c(1,3,4,2), nrow=2, ncol=2)
MyFruitList[['Kiwi']][['Shape']] <- matrix(c(2,4,5,1), nrow=2, ncol=2)
И вот что я пытался использовать, чтобы переместить матрицы, хранящиеся под Киви и Манго, в новый список.
#Obviously this doesn't actually work
MyFruitListAsRows <- lapply(Fruits, function(i) {
MyFruitListAsRows <- matrix(cbind(paste0(MyFruitList[i])))
})
names(MyFruitListAsRows) <- paste0(Fruits, "Row")
В идеале я должен получить список с именем MyFruitsAsRows
, который содержит матрицы 2, 4 на 2 с именами Kiwi
и Mango
, содержащие соответствующие им данные Size
и Shape
из исходного списка MyFruitList
,
например. Для Манго это будет выглядеть так:
[,1] [,2] [,3] [,4]
[1,] 3 7 3 7
[2,] 5 2 6 5
(Извините, что цифры слишком схожи, это было плохо спланировано, и поначалу может быть трудно понять, куда бы я хотел, чтобы мои цифры шли)
Был построен из этого:
$Size
[,1] [,2]
[1,] 3 7
[2,] 5 2
$Shape
[,1] [,2]
[1,] 3 7
[2,] 6 5
Редактировать: я попытался адаптировать совет Ронака Шаха и сделал следующее:
library(tidyverse)
MyFruitListAsRows <- map(MyFruitList[i], bind_cols)
но работает либо
MyFruitListAsRows[['KiwiRow']]
MyFruitListAsRows[['MangoRow']]
Производит:
I get Error in x[i, , drop = FALSE] : subscript out of bounds
Если я пытаюсь заставить RStudio показать мне, что находится в одном из моих новых списков в окне, RStudio обнаруживает фатальную ошибку и вылетает.