Преобразование списка списков в фрейм данных в R. Мне нужны имена списка списков в виде столбцов - PullRequest
0 голосов
/ 11 января 2019

У меня есть список списков:

list <- list(list(1,"a",2), list(3,"b",4,5), list(6,"c"))

Я не знаю, как это показать, но каждый список имен списков похож: изображение имен списков списков

так, что 1 из списка first отображается на «id», «a» отображается на «code_name», а 2 на «project».

4-й элемент в списке second имеет другое имя (не может отобразить его в снимке из-за чувствительности), и номер 5 отображается на него.

Мне нужен df, где имена - это столбцы, и, таким образом, элементы в first списке (т.е. 1, «a» и 2) становятся первой строкой.

И затем элементы в списке second (т. Е. 3, «b», 4,5) становятся второй строкой.

Я пробовал:

df <- as.data.frame(sapply(list, unlist))

и это была ошибка:

Ошибка в (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,: аргументы подразумевают различное количество строк: 3, 4, 2

Я пробовал:

df <- as.data.frame(list[1])

И это было в некоторой степени то, что мне нужно, но тогда мне нужны остальные строки.

Заранее спасибо, я очень плохо знаком с R, но я знаю, что это очень простая манипуляция, но я просто не могу ее получить.

Спасибо !!!

1 Ответ

0 голосов
/ 11 января 2019

Ваш вопрос немного расплывчат, но я понял, что вам нужно создать консолидированный фрейм данных из ваших вложенных списков. Я бы сделал это в два этапа:

  1. преобразовать каждый список в data.frame, аналогично тому, что вы сделали
  2. rbind эти data.frames вместе в предположении, что столбцы должны выстроиться в ряд ... вот почему я дал им непротиворечивые имена

Я использую rbindlist из пакета data.table, поскольку он имеет хороший аргумент fill.

Вот решение:

library(data.table)
my_list <- list(list(1,"a",2), list(3,"b",4,5), list(6,"c"))
my_list <- lapply(my_list, function(x){
  dat <- as.data.frame(x)
  names(dat) <- paste0("X", 1:ncol(dat))
  return(dat)
})
df <- rbindlist(my_list, fill = TRUE)
df
#>    X1 X2 X3 X4
#> 1:  1  a  2 NA
#> 2:  3  b  4  5
#> 3:  6  c NA NA

Создано в 2019-01-10 пакетом Представление (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...