从数据框创建列表的JSON列表

时间:2019-05-17 09:34:13

标签: r json dataframe

我是R的新手,我有一个混合类型的data.frame,需要将其转换为一个json对象,该对象将data.frame的每一行作为列表中的一个列表,列标题作为第一个列表。

我最近来的是下面的

library(jsonlite)
df <- data.frame(X=as.numeric(c(1,2,3)),
                 Y=as.numeric(c(4,5,6)),
                 Z=c('a', 'b', 'c'),
                 stringsAsFactors=FALSE)
test <- split(unname(df), 1:NROW(df))
toJSON(test)

哪个给

{"1":[[1,4,"a"]],"2":[[2,5,"b"]],"3":[[3,6,"c"]]}

如果有某种方法可以删除键并将值列表展平一个级别,我可以通过添加姓氏来完成这项工作,但是有什么更简单的方法让我丢失了?我想要的输出是

{[["X","Y","Z"],[1,4,"a"],[2,5,"b"],[3,6,"c"]]}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

通常的想法是获取您希望数据包含在矢量列表中的json格式(2D矢量和2D列表不起作用)。

嘿,这是一种方法,也许有一种更优雅的方法,但是它可以工作(但是它使数字成为字符串,我找不到那个遗憾)。

library(rlist)

df <- data.frame(X=as.numeric(c(1,2,3)),
                 Y=as.numeric(c(4,5,6)),
                 Z=c('a', 'b', 'c'),
                 stringsAsFactors=FALSE)

#make the column names a row and then remove them
names <- colnames(df)
df[2:nrow(df)+1,] <- df
df[1,] <- names
colnames(df) <- NULL

#convert the df into a list containing vectors
data <- list()
for(i in seq(1,nrow(df))){
  data <- list.append(data,as.vector(df[i,]))
}

toJSON(data)