json - 在 R 中向 JSON 添加键和值

标签 json r reactjs nvd3.js jsonlite

我用了jsonlite图书馆:json_pca_data <- toJSON(pca_table, pretty = TRUE))生产JSON :

{
    "neuron_type" : [
        "Ciliated_sensory_neurons",
        "Touch_receptor_neurons",
        ...
        ...
    ],
    "PC1" : [
        4.1158,
        -1.1647,
        ...
        ...
    ],
    "PC2" : [
        -1.4615,
        1.9541,
        ...
        ...
    ],
    "octr-1" : [
        2.5517,
        2.8857,
        ...
        ...

来自 pca_table看起来像这样:

neuron_type                      PC1              PC2          octr-1    
Ciliated_sensory_neurons      4.1157653       -1.4614620      2.551738 
Touch_receptor_neurons       -1.1647174        1.9540974      2.885656 
...
...

但我想添加到最后 JSON还有PC1: 0.36PC2: 0.21 .我可以只修改初始 pca_table :

pca_table$PC1_percent = percent[1]
pca_table$PC2_percent = percent[2]

添加两列,然后将其转换为JSON , 然而, 我不喜欢有

"PC1_percent" : [
    0.3676,
    0.3676,
    0.3676,
    0.3676,
    0.3676,
    0.3676,
    0.3676,
    0.3676,
    0.3676
],
"PC2_percent" : [
    0.2331,
    0.2331,
    0.2331,
    0.2331,
    0.2331,
    0.2331,
    0.2331,
    0.2331,
    0.2331
]

我只想拥有键和值:

"PC1_percent" : 0.3676, "PC2_percent" : 0.2331

Rstudio 中有没有办法做到这一点? ?

最佳答案

我同意你改变底层数据副编辑JSON的逻辑。您的第一个问题是您要用单个值替换列值,而不是附加它。

pca_table$PC1_percent = c(pca_table$PC1_percent, percent[1])

附加 percent 的第一个值到 PC1_percent 列的末尾。不幸的是,这可能会出错(例如 replacement has 3 rows, data has 2)或会产生其他不良影响。

它有助于了解您是否打算将一个值附加到所有列,或者您是否只想扩展这两行。对于这两种方法,我的假数据:

tbl <- data.frame(pc1=1:2, pc2=11:12, othr=51)
tbl
#   pc1 pc2 othr
# 1   1  11   51
# 2   2  12   51

扩展所有列

创建一个新行,代表原始 data.frame(您需要为所有列添加一些内容):

newrow <- data.frame(pc1=3, pc2=13, othr=NA)
tbl2 <- rbind(tbl, newrow)
tbl2
#   pc1 pc2 othr
# 1   1  11   51
# 2   2  12   51
# 3   3  13   NA
jsonlite::toJSON(tbl2, dataframe="columns")
# {"pc1":[1,2,3],"pc2":[11,12,13],"othr":[51,51,"NA"]} 

(我从你的问题中推断出 "columns",即使你没有在你的电话中指定它。为简洁起见,我省略了 pretty=TRUE .)

只扩展部分列

通过这条路线,您从 data.frame 更改为 list,因为 data.frame 大致是一个 所有向量长度相同的向量列表

lst <- as.list(tbl)
lst$pc1 <- c(lst$pc1, 98)
lst$pc2 <- c(lst$pc2, 99)
jsonlite::toJSON(lst)
# {"pc1":[1,2,98],"pc2":[11,12,99],"othr":[51,51]} 

关于json - 在 R 中向 JSON 添加键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47983058/

相关文章:

r - 将浮雕(GEOtiff,.tif)添加到瑞士国家边界的 ggplot((多边形)shapefile,.shp)

javascript - 在 React 组件中获取数据的位置

javascript - 如何在 React 中集中处理 API 调用的错误(使用 Axios)

json - 使用 JQ 的多个过滤器

json - Postgresql json 列表值提取

java - Jackson:无法使用嵌套 DTO 处理托管/反向引用 'defaultReference'

r - 从 chart.TimeSeries 中的图表中获取图例 R

r - 具有部分字符串匹配 R 的列的总和

sql - 保持信息的私密性,即使对数据库用户也是如此

javascript - 在 CRM 2011 中使用 OData 检索多个