У меня есть ряд сложных списков, которые я пытаюсь преобразовать в формат фрейма данных в R. Каждый список будет конвертирован в фрейм данных индивидуально.Некоторые из списков имеют пустые значения, что затрудняет преобразование списка во фрейм данных.
Я попытался lapply / sapply найти максимальную длину списка, но ни одна из них не работает.Кроме того, использование do.call и unlist не дает мне данных в нужном мне формате (оно теряет заголовки столбцов и форматирует таблицу в три столбца, а не во многие столбцы).Я обнаружил, что следующий код работает с первыми 5 списками:
max_list<-max(rapply(List, length))
df<-as.data.frame(rapply(List, function(x) 'length<-'(x, max_list), how="list"))
Однако, когда я пытаюсь применить это в цикле для всех списков, я получаю следующую ошибку.
Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, : arguments imply differing number of rows: 3, 0
Моя конечная цель состоит в том, чтобы части списка, в которых отсутствуют значения, были преобразованы в "NA".
Могу ли я что-нибудь добавить в этот код, чтобы избежать ошибки?Или есть что-то еще, что я могу сделать, чтобы преобразовать те списки, которые имеют различное количество строк?
РЕДАКТИРОВАТЬ:
Я не могу опубликовать свой точный код длявводится в оперативном режиме, но список является вложенным и очень сложным.
Пример ввода:
iter1 <- list(item1 = 1, item2 = "a",item3="b")
iter2 <- list(item1 = 2, item2 = "c")
List <- list(iter1 = iter1, iter2 = iter2)
В идеале, я хотел бы для этого вывода в качестве фрейма данных:
V1 V2 V3 V4 V5
1 a b 2 c
Как уже упоминалось, я смог получить этот результат с кодом выше.Но я не уверен, почему код не работает при применении к более сложным спискам.