Не удалось преобразовать списки, содержащие данные - PullRequest
0 голосов
/ 02 октября 2019

Я получил список p 326, содержащий кадры данных, как показано ниже,


p326 <- list(Class = structure(list(Var1 = structure(c(1L, 1L, 1L, 1L, 
1L), .Label = "B", class = "factor"), Var2 = structure(1:5, .Label = c("GLP1", 
"Insulin, Fast Acting", "Metformin/SU", "Others", "SGLT"), class = "factor"), 
    Freq = c(18.1818181818182, 9.09090909090909, 9.09090909090909, 
    36.3636363636364, 27.2727272727273)), class = "data.frame", row.names = c(NA, 
-5L)), Product = structure(list(Var1 = structure(c(1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "B", class = "factor"), 
    Var2 = structure(1:11, .Label = c("Product 100", "Product 102", 
    "Product 103", "Product 106", "Product 25", "Product 26", 
    "Product 28", "Product 75", "Product 87", "Product 94", "Product 99"
    ), class = "factor"), Freq = c(9.09090909090909, 9.09090909090909, 
    9.09090909090909, 9.09090909090909, 9.09090909090909, 9.09090909090909, 
    9.09090909090909, 9.09090909090909, 9.09090909090909, 9.09090909090909, 
    9.09090909090909)), class = "data.frame", row.names = c(NA, 
-11L)), Product.Family = structure(list(Var1 = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "B", class = "factor"), 
    Var2 = structure(1:8, .Label = c("Product Family 19", "Product Family 20", 
    "Product Family 22", "Product Family 43", "Product Family 48", 
    "Product Family 50", "Product Family 51", "Product Family 53"
    ), class = "factor"), Freq = c(9.09090909090909, 9.09090909090909, 
    9.09090909090909, 9.09090909090909, 36.3636363636364, 9.09090909090909, 
    9.09090909090909, 9.09090909090909)), class = "data.frame", row.names = c(NA, 
-8L)), Branded.Generic = structure(list(Var1 = structure(1L, .Label = "B", class = "factor"), 
    Var2 = structure(1L, .Label = "B", class = "factor"), Freq = 100), class = "data.frame", row.names = c(NA, 
-1L)))

Поэтому, когда я пытаюсь преобразовать это в кадр данных, как показано ниже, я получаю ошибку

Ошибка: Аргумент 1 не может быть списком, содержащим фреймы данных

p326 <- bind_rows(p326, .id = 'Col')

Что я здесь не так делаю?

1 Ответ

1 голос
/ 02 октября 2019

На основании сообщения об ошибке похоже, что вход является вложенным списком. Мы можем unlist один уровень, используя recursive = FALSE, а затем использовать bind_rows.

library(dplyr)
bind_rows(unlist(p326, recursive = FALSE), .id = 'Col')

Мы можем воспроизвести ту же ошибку, используя данные, предоставленные @A. Сулиман

p326 <- list(A=list(Branded.Generic = structure(list(Var1 = structure(1L, 
.Label = "B", class = "factor"),Var2 = structure(1L, .Label = "B",class = "factor"),
Freq = 100), class = "data.frame", row.names = c(NA, -1L)),
Branded.Generi = structure(list(Var1 = structure(1L, .Label = "B",class = "factor"),
Var2 = structure(1L, .Label = "B", class = "factor"), Freq = 100), 
class = "data.frame", row.names = c(NA,-1L))))

bind_rows(p326, .id = 'Col')

Ошибка: аргумент 1 не может быть списком, содержащим фреймы данных

bind_rows(unlist(p326, recursive = FALSE), .id = 'Col')
#                Col Var1 Var2 Freq
#1 A.Branded.Generic    B    B  100
#2  A.Branded.Generi    B    B  100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...