我是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"]]}
感谢您的帮助!
答案 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)