动态拆分列表

时间:2019-05-20 14:05:45

标签: r

我有一个列表

query= { "id":"2317",   "product":"112",  "tag":"A,B,C"}

我想要这样的输出-

query1= { "id":"2317",   "product":"112",  "tag":"A"}
query2= { "id":"2317",   "product":"112",  "tag":"B"}
query3= { "id":"2317",   "product":"112",  "tag":"C"}

p.s:标签包含从1到n个项目的任意数量的项目。因此,如果代码中包含“ n”个项目,那么我们需要获取“ n”个查询。

有人可以帮助我如何在R中做到这一点?也许借助循环或任何有效的方法。

先谢谢您。>!

注意:在R中,查询将存储为字符。所以我使用的是query = fromJSON(query),那么它将存储为列表。

1 个答案:

答案 0 :(得分:0)

我想最简单的方法是先将其转换为数据框,拆分标签列,然后将其转换回JSON:

df <- dplyr::bind_rows(fromJSON('{ "id":"2317",   "product":"112",  "tag":"A,B,C"}'))
s <- strsplit(df$tag, split = ",")
n <- length(unlist(s))
df <- data.frame(id = rep(df$id, n), product = rep(df$product, n), tag = unlist(s))
toJSON(df)

这将为您提供:

[{"id":"2317","product":"112","tag":"A"},{"id":"2317","product":"112","tag":"B"},{"id":"2317","product":"112","tag":"C"}] 

您可以使用jsonlite::write_json(df, path = 'file_name.json')

轻松地将其写入文件