将R数据帧转换为JSON,同时将每一行分离为新的JSON对象

将R数据帧转换为JSON,同时将每一行分离为新的JSON对象,r,json,dataframe,R,Json,Dataframe,我有一个要转换为JSON的R数据帧,但我希望将每一行插入名为“traits”的新JSON对象中。我尝试将traits列作为第一列,并将新的dataframe转换为JSON,但这不会产生正确的输出。我还尝试在每个转换的JSON输出中添加一个“traits”:{对象,但也失败了。我尝试在数据框架内工作,然后将其转换为JSON,因为toJSON会在括号[]中生成一个列表,我也无法绕过它。我使用的是jsonlite color = c('red','blue','green') fruit = c('a

我有一个要转换为JSON的R数据帧,但我希望将每一行插入名为“traits”的新JSON对象中。我尝试将traits列作为第一列,并将新的dataframe转换为JSON,但这不会产生正确的输出。我还尝试在每个转换的JSON输出中添加一个“traits”:{对象,但也失败了。我尝试在数据框架内工作,然后将其转换为JSON,因为toJSON会在括号[]中生成一个列表,我也无法绕过它。我使用的是jsonlite

color = c('red','blue','green')
fruit = c('apple','orange','grape')
animal = c('cat','dog','chicken')
df<- data.frame(color, fruit, animal)
toJSON(df, pretty= TRUE)
这里有一个方法:

L <- list(list(traits = as.list(df[1,])), 
          list(traits = as.list(df[2,])),
          list(traits = as.list(df[3,])))
要获取此列表,请执行以下操作

L <- apply(df, 1, function(x) list(traits = as.list(x)))

L这很有帮助,谢谢。它实现了想要的特性,但我注意到它将JSON对象的每个值放在括号中,所以它看起来像:“动物”:[“鸡”]而不是“动物”:“鸡”“米兰,这就是为什么我使用<代码> AutoPunBox=Trime。@米兰尼斯。请考虑。否则你的问题被认为是没有答案的。
> toJSON(L, pretty = TRUE, auto_unbox = TRUE)
[
  {
    "traits": {
      "color": "red",
      "fruit": "apple",
      "animal": "cat"
    }
  },
  {
    "traits": {
      "color": "blue",
      "fruit": "orange",
      "animal": "dog"
    }
  },
  {
    "traits": {
      "color": "green",
      "fruit": "grape",
      "animal": "chicken"
    }
  }
] 
L <- apply(df, 1, function(x) list(traits = as.list(x)))
df2 <- purrr::transpose(lapply(df, function(x) as.character(x)))
L <- lapply(df2, function(x) list(traits = x))
df <- data.frame(color, fruit, animal, stringsAsFactors = FALSE)
L <- lapply(purrr::transpose(df), function(x) list(traits = x))