【问题标题】:Turn Multiple Column into Json Array in R?在R中将多列转换为Json数组?
【发布时间】:2017-09-29 02:01:14
【问题描述】:

假设我有 mtcars 数据集,我想取三列并将它们转换为 JSON 数组。如何将其转换为 json 数组,是否可以将它们传递到 POSTGRESQL 数据库?

library(jsonlite)
df <- mtcars
attach(mtcars)
json.column <- cbind(mpg,cyl,disp) 

我使用 toJSON() 吗?

mtcars.json <- toJSON(json.column)

https://cran.r-project.org/web/packages/jsonlite/vignettes/json-aaquickstart.html

对象数组 [{"name":"Erik", "age":43}, {"name":"Anna", "age":32}] 数据框simplifiedDataFrame

【问题讨论】:

    标签: arrays json r database postgresql


    【解决方案1】:

    将您的数据保存为 data.frame,而不是矩阵。使用

    json.column <- data.frame(mpg,cyl,disp)
    toJSON(json.column)
    # [{"mpg":21,"cyl":6,"disp":160},{"mpg":21,"cyl":6,"disp":160}, ...
    

    另外,您应该避免使用attach()。如果您忘记detach(),可能会导致很多问题。另外,您可以经常使用with() 来避免它

    json.column <- with(mtcars, data.frame(mpg,cyl,disp))
    

    【讨论】:

      【解决方案2】:

      (对于初学者,切勿使用attach!这很危险!通常使用with。)

      有很多方法可以做到这一点。以下是使用 dplyr 创建值的方法:

      qq <- rowwise(mtcars) %>% 
          mutate(newcol=as.character(jsonlite::toJSON(list(mpg=mpg, cyl=cyl, disp=disp))))
      > qq$newcol
       [1] "{\"mpg\":[21],\"cyl\":[6],\"disp\":[160]}"     "{\"mpg\":[21],\"cyl\":[6],\"disp\":[160]}"    
       [3] "{\"mpg\":[22.8],\"cyl\":[4],\"disp\":[108]}"   "{\"mpg\":[21.4],\"cyl\":[6],\"disp\":[258]}"  
       ...
      

      从那里开始,如果您的 Postgres 数据库设置为使用 newcol 作为 JSON 类型,我认为像往常一样编写该表应该可以工作。

      【讨论】:

      • 太好了,我很想跟上 dplyr 的步伐,这样我就可以通过管道传输我的其他预处理功能
      猜你喜欢
      • 2020-10-15
      • 2021-09-22
      • 2022-07-13
      • 2022-01-18
      • 1970-01-01
      • 2013-08-22
      • 1970-01-01
      • 2022-09-24
      相关资源
      最近更新 更多