将R表转换为JSON字符串

将R表转换为JSON字符串,json,r,Json,R,我正在学习R,我正在使用R进行预测分析API,我正在使用plumber创建web API服务。我需要检索NaiveBayes预测结果的混淆矩阵,但不幸的是,我找不到任何方法将结果对象(R表对象)转换为JSON字符串 我的选择之一是手动创建JSON字符串,但我找不到遍历表的方法,包括行和列名 这是我的表对象的一个示例: Active Inactive Hotlined Suspended Active 1 0 2

我正在学习R,我正在使用R进行预测分析API,我正在使用plumber创建web API服务。我需要检索NaiveBayes预测结果的混淆矩阵,但不幸的是,我找不到任何方法将结果对象(R表对象)转换为JSON字符串

我的选择之一是手动创建JSON字符串,但我找不到遍历表的方法,包括行和列名

这是我的表对象的一个示例:

          Active   Inactive   Hotlined   Suspended
Active       1        0          2           1
Inactive     0        2          0           0
Hotlined     3        0          3           2
Suspended    0        5          0           4
我需要的输出类似于:

[
   {column:'Active',row:'Active',value:1},
   {column:'Inactive',row:'Active',value:0},
   {column:'Hotlined',row:'Active',value:2},
   {column:'Suspended',row:'Active',value:1},
   .......... #The same for next rows
,]
此外,根据预测结果,table对象可以有更少的列和/或更少的行,我想我应该在前面提到这一点
您知道如何实现这一点吗?

将数据转换为长格式并转换为json。 tidyr的示例:

library(dplyr)
library(tidyr)
library(jsonlite)

df1 %>% 
  dplyr::add_rownames("row") %>% 
  tidyr::gather(column, value, -row) %>%
  arrange(row) %>% 
  select(column, row, value) %>% 
  toJSON(pretty = TRUE)

# [
#   {
#     "column": "Active",
#     "row": "Active",
#     "value": 1
#   },
#   {
#     "column": "Inactive",
#     "row": "Active",
#     "value": 0
#   },
#   {
#     "column": "Hotlined",
#     "row": "Active",
#     "value": 2
#   },
#
#   ...
使用以下命令创建的测试输入:

df1 <- read.table(text = "
          Active   Inactive   Hotlined   Suspended
  Active       1        0          2           1
  Inactive     0        2          0           0
  Hotlined     3        0          3           2
  Suspended    0        5          0           4
"
)
df1

@thelatemail给出的答案有效,并给出了正确的字符串

这就是答案

library(jsonlite)
toJSON(setNames(as.data.frame(tab),c("row","column","value")))

感谢大家的帮助

您可以使用嵌套的for循环遍历表的行和列。您需要的正是这个JSON结构吗?@tluh我可以遍历表数据,但我也需要列和行名称,我无法实现that@MartinDabbelJuSmelter是的,或者类似的。。。我需要重新构建生成的矩阵,事实上,矩阵列和行数量会根据预测结果does
toJSON(setNames(如.data.frame(tab)、c(“row”、“column”、“value”)))
进行更改?非常感谢,非常接近,但无法正常工作。。。当我进行as.data.frame转换时,它会为每一行创建如下内容:var1 var2 Freq Active Active 0,我不知道它是否应该是这样的,当我应用您建议的方法时,生成的json是这样的:[{“column”:“var1”,“row”:“1”,“value”:“Active”},…在其他一些情况下,它混合了列、行和值信息…列和行的数量可能会因模型而异。您可以
dput
示例对象吗?
  Active Inactive Hotlined Suspended
1      1        0        2         1
2      0        2        0         0
3      3        0        3         2
4      0        5        0         4
library(jsonlite)
toJSON(setNames(as.data.frame(tab),c("row","column","value")))