在 R 中连接字符和数字 json 元素

问题描述

我正在尝试使用 jsonlite 将两个 json 对象连接到 R 中的单个 json 对象中。

举个简单的例子,如果我有以下内容

我使用的 api 需要一个 Json 对象,该对象将数据帧的列名作为第一个元素,然后是行的数字输出。举例说明:

df <- data.frame(A = rnorm(2),B = rnorm(2),C = rnorm(2))

我需要看起来像:

set.seed(123)

[["A","B","C"],[-0.5605,1.5587,0.1293],[-0.2302,0.0705,1.7151]]

但以下尝试未能实现上述目标:

c( jsonlite::toJSON( names(df) ),jsonlite::toJSON( df,"values" ))
paste0( jsonlite::toJSON( names(df) ),"values" ))

This 解决方案不起作用,我还没有找到关于如何实现这一目标的任何其他建议。

任何想法将不胜感激。

解决方法

一个选项是按行(asplitMARGIN = 1)拆分为list,将数据的c 与(names)连接起来,然后应用toJSON

library(jsonlite)
toJSON(c(list(names(df)),asplit(df,1)))
#[["A","B","C"],[-0.5605,1.5587,0.1293],[-0.2302,0.0705,1.7151]]