2017-01-11 2 views
1

Вот список списка х генерироваться следующим образом:списка новообращенного из списка на принуждаемый dataframe

list1 <- list(NULL, as.integer(0)) 
    list2 <- list(NULL, as.integer(1)) 
    list3 <- list(1:5, 0:4) 
    x <- list(a=list1, b=list2, c=list3) 

х имеют следующую структуру:

str(x) 
    List of 3 
    $ a:List of 2 
     ..$ : NULL 
     ..$ : int 0 
    $ b:List of 2 
     ..$ : NULL 
     ..$ : int 1 
    $ c:List of 2 
     ..$ : int [1:5] 1 2 3 4 5 
     ..$ : int [1:5] 0 1 2 3 4 

Я пытаюсь преобразовать её в принудительной передачи данных. Я впервые использовал

xc <- data.frame(lapply(x, as.numeric) 

я получил следующую ошибку

Error in lapply(x, as.numeric) : 
    (list) object cannot be coerced to type 'double 

На самом деле это работает только с as.character в качестве аргумента.

Моя цель состоит в том, чтобы достичь dataframe со следующей структурой:

str(xc) 

    'data.frame': 2 obs. of 3 variables: 
    $ a: int NA 0 ... 
    $ b: int NA 1 ... 
    $ c: int [1:5] 1 2 3 4 5 int [1:5] 0 1 2 3 4 
+0

Попробуйте 'data.frame (lapply (x, unlist))' Пожалуйста, покажите небольшой воспроизводимый пример – akrun

+0

Ошибка в (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,: аргументы подразумевают различное количество строк: 1434, 1081, 5465, 95263, 18705, 6206, 12085, 22000, 499 –

+0

Хорошо, пожалуйста, покажите небольшой воспроизводимый пример с использованием 'dput', так как неясно о структуре ваших данных из 'str' для этих больших данных – akrun

ответ

0

Я думаю, что столбцы результирующего кадра данных должны быть перечислены (это тип, который может обрабатывать несколько векторов и NULL значения).

Использование пакета dplyr или data.table, вероятно, является самым простым способом. Вы можете преобразовать его обратно в базовый data.frame с as.data.frame:

library(data.table) 
xc <- as.data.table(x) 

или

library(dplyr) 
xc <- as_data_frame(x) 

После преобразования в базовую data.frame, результат тот же:

as.data.frame(xc) 

#>  a b    c 
#> 1 NULL NULL 1, 2, 3, 4, 5 
#> 2 0 1 0, 1, 2, 3, 4 

столбцы списка:

str(as.data.frame(xc)) 

#> 'data.frame': 2 obs. of 3 variables: 
#> $ a:List of 2 
#> ..$ : NULL 
#> ..$ : int 0 
#> $ b:List of 2 
#> ..$ : NULL 
#> ..$ : int 1 
#> $ c:List of 2 
#> ..$ : int 1 2 3 4 5 
#> ..$ : int 0 1 2 3 4 
Смежные вопросы