R数据框到对象的JSON数组

时间:2018-06-22 13:05:47

标签: r jsonlite

我有以下格式的R数据框

id  code  value
1   A      3
2   B      5 
3   C      9

使用:

  toJSON(df)
  returns:
  [{id:1,code:A,value:3},...]

我想要的输出是:

[{1,A,3},{2,B,5}..]

使用

 df <- unname(df)
 returns an array of arrays, [[..],[..],...]]

我正在使用jsonlite包

1 个答案:

答案 0 :(得分:0)

正如@nicola所说,您所请求的([{1,A,3},{2,B,5},...])不是有效的JSON。我相信您可以获得(没有名字)的最接近的东西是

df <- read.table(header=TRUE, stringsAsFactors=FALSE, text='id  code  value
1   A      3
2   B      5 
3   C      9')
library(jsonlite)

toJSON(lapply(seq.int(nrow(df)), function(i) unname(lapply(df, `[[`, i))),
       auto_unbox=TRUE)
# [[1,"A",3],[2,"B",5],[3,"C",9]] 

通常,jsonlite喜欢将标量保持为一个矢量,因此,如果删除auto_unbox=TRUE组件,则会得到:

toJSON(lapply(seq.int(nrow(df)), function(i) unname(lapply(df, `[[`, i))))
# [[[1],["A"],[3]],[[2],["B"],[5]],[[3],["C"],[9]]] 

在功能上可能相同,具体取决于您如何使用此数据。 (我同意,拆箱的实现方式对于人类来说更容易阅读。)

这两种方法都保留列值的类型(数字,字符串)。