如何使用 jsonlite 包从 R 数据帧生成自定义 json
How to generate a custom json from R dataframe using jsonlite package
我在jsonlite的github主页上有post这个问题,目前没有回复,https://github.com/jeroen/jsonlite/issues/390
其他包可以获取结果吗?
MWE:
library(jsonlite)
ifsxls <- structure(list(full = c("NATURE REVIEWS DRUG DISCOVERY", "LANCET"
), ab = c("NAT REV DRUG DISCOV", "LANCET"), ifc = c("84.694",
"79.321"), if5 = c("80.543", "77.237")), row.names = c(NA, -2L
), class = c("tbl_df", "tbl", "data.frame"))
toJSON(ifsxls, pretty=TRUE)
现在:
[
{
"full": "NATURE REVIEWS DRUG DISCOVERY",
"ab": "NAT REV DRUG DISCOV",
"ifc": "84.694",
"if5": "80.543"
},
{
"full": "LANCET",
"ab": "LANCET",
"ifc": "79.321",
"if5": "77.237"
}
]
预计:
{
"NATURE REVIEWS DRUG DISCOVERY" : ["NAT REV DRUG DISCOV", "84.694", "80.543"],
"LANCET" : ["LANCET", "79.321", "77.237"]
}
非常感谢。
这是一个非常不寻常的期望输出,但您可以将 data.frame 转换为更符合您期望的 JSON 形状的形状。例如,使用基本 R 函数,您可以执行
ifsxls |>
split(~full) |>
lapply(function(x) unlist(subset(x, select=-full))) |>
jsonlite::toJSON(pretty=TRUE)
# {
# "LANCET":["LANCET","79.321","77.237"],
# "NATURE REVIEWS DRUG DISCOVERY":["NAT REV DRUG DISCOV","84.694","80.543"]
# }
我在jsonlite的github主页上有post这个问题,目前没有回复,https://github.com/jeroen/jsonlite/issues/390
其他包可以获取结果吗?
MWE:
library(jsonlite)
ifsxls <- structure(list(full = c("NATURE REVIEWS DRUG DISCOVERY", "LANCET"
), ab = c("NAT REV DRUG DISCOV", "LANCET"), ifc = c("84.694",
"79.321"), if5 = c("80.543", "77.237")), row.names = c(NA, -2L
), class = c("tbl_df", "tbl", "data.frame"))
toJSON(ifsxls, pretty=TRUE)
现在:
[
{
"full": "NATURE REVIEWS DRUG DISCOVERY",
"ab": "NAT REV DRUG DISCOV",
"ifc": "84.694",
"if5": "80.543"
},
{
"full": "LANCET",
"ab": "LANCET",
"ifc": "79.321",
"if5": "77.237"
}
]
预计:
{
"NATURE REVIEWS DRUG DISCOVERY" : ["NAT REV DRUG DISCOV", "84.694", "80.543"],
"LANCET" : ["LANCET", "79.321", "77.237"]
}
非常感谢。
这是一个非常不寻常的期望输出,但您可以将 data.frame 转换为更符合您期望的 JSON 形状的形状。例如,使用基本 R 函数,您可以执行
ifsxls |>
split(~full) |>
lapply(function(x) unlist(subset(x, select=-full))) |>
jsonlite::toJSON(pretty=TRUE)
# {
# "LANCET":["LANCET","79.321","77.237"],
# "NATURE REVIEWS DRUG DISCOVERY":["NAT REV DRUG DISCOV","84.694","80.543"]
# }