У меня есть список названных списков следующей формы из объекта JSON:
my_list = list(list(a = 10, b = "blah"),
list(a = 15, b = "stuff"))
Каждый элемент внешнего списка является именованным списком, и я хочу преобразовать его в файл data.frame следующей формы с именами столбцов:
a b
10 "blah"
15 "stuff"
На поверхности, я могу добиться этого, выполнив to_df = data.frame(do.call(rbind, my_list))
.
Однако, если бы я попытался извлечь отдельный столбец, используя to_df$a
или to_df[,1]
, я бы получил список вместо вектора, как обычно ожидалось из data.frame:
> to_df[,1]
[[1]]
[1] 10
[[2]]
[1] 15
Вместо:
> to_df[,1]
[1] 10 15
В старой почте в списке рассылки R было предложено следующее решение: to_df = as.data.frame(t(sapply(my_list, rbind)))
. Но не только это не передается по именам столбцов, но по-прежнему имеет ту же проблему возврата списка вместо вектора при просмотре отдельных столбцов с помощью to_df[,1]
.
Какой лучший способ достичь этого? Есть ли способ dplyr
?
EDIT: спасибо за все решения, кажется, что трюк - это lapply
и преобразовать каждый элемент списка в data.frame
, а затем связать их вместе с помощью dplyr или do.call
. Альтернативно, data.table
выполняет большую часть работы с одним вызовом rbindlist
.