我试图从数据框中获取 JSON 数组对象,其中每个 JSON 对象都是数据框的子集
> x <- 1:5
> y <-c('a','b','c','d','e')
> z <-c(1,1,1,2,2)
> df <-data.frame(x,y,z)
> df
x y z
1 1 a 1
2 2 b 1
3 3 c 1
4 4 d 2
5 5 e 2
> rjson::toJSON(df)
[1] "{\"x\":[1,2,3,4,5],\"y\":[\"a\",\"b\",\"c\",\"d\",\"e\"],\"z\":[1,1,1,2,2]}"
> df1 = toJSONArray2(na.omit(df), json = F, names = F)
> rjson::toJSON(df1)
[1] "[[1,\"a\",1],[2,\"b\",1],[3,\"c\",1],[4,\"d\",2],[5,\"e\",2]]"
我需要的输出是
[ [ [1,a],[2,b],[3,c] ],[ [4,d],[5,e] ] ]
下面的方法我能够按预期获得数据帧列表,但无法获得所需的 json 输出。
> x <- foreach(i=1:2) %do% { subset(df,df$z==i)[c(1,2)]}
> x
[[1]]
x y
1 1 a
2 2 b
3 3 c
[[2]]
x y
4 4 d
5 5 e
找到了解决方案。
> x <- foreach(i=1:2) %do% {
tmp <-subset(df,df$z==i)[c(1,2)]
toJSONArray2(na.omit(tmp), json = F, names = F)
}
> rjson::toJSON(x)
我需要一个没有 toJSONArray2 的实现,这很慢