我有list
并且每个列表元素中的字段具有相同的名称(只有值不同),我需要将其转换为data.frame
,其列名与字段的名称相同名称。以下是我的清单,
Data input (data input in json format.json)
library(rjson)
data <- fromJSON(file = "data input in json format.json")
head(data,3)
[[1]]
[[1]]$floors
[1] 5
[[1]]$elevation
[1] 15
[[1]]$bmi
[1] 23.7483
[[2]]
[[2]]$floors
[1] 4
[[2]]$elevation
[1] 12
[[2]]$bmi
[1] 23.764
[[3]]
[[3]]$floors
[1] 3
[[3]]$elevation
[1] 9
[[3]]$bmi
[1] 23.7797
我的预期data.frame
是,
floors elevation bmi
5 15 23.7483
4 12 23.7640
3 9 23.7797
你可以帮我解决这个问题吗?
谢谢你。
答案 0 :(得分:1)
您可以使用jsonlite
。
library(jsonlite)
然后使用fromJSON()
并在参数txt
中指定文件的路径(或者URL或原始文本):
fromJSON(txt = 'path/to/json/file.json')
结果是:
floors elevation bmi
1 5 15 23.7483
2 4 12 23.7640
3 3 9 23.7797
如果你更喜欢rjson,你可以先读它:
data <- rjson::fromJSON(file = 'path/to/json/file.json')
然后使用do.call()
和rbind.data.frame()
将列表转换为数据框:
do.call("rbind.data.frame", data)
替代do.call()
:使用更快的data.table
s rbindlist()
:
data.table::rbindlist(data)