在R中写入json标量

r1zhe5dt  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(96)

r中,我在一个 Dataframe 中有一些数据,需要将其导出到jsonl中。在jsonl中,每一行都是它自己的有效json。正如链接的问题所示,通过将jsonlite::toJSON()应用于每一行,可以很容易地做到这一点。我的问题是,我需要其中一个变量是标量字符串,但toJSON将任何向量R向量放入列表中:

library(tidyverse)
library(jsonlite)
#> 
#> Attaching package: 'jsonlite'
#> The following object is masked from 'package:purrr':
#> 
#>     flatten
d <- tibble(
  id = 1:3,
  text = c("this is a string", "this is another string", "yet another string")
) 

jl <- d |> 
  transpose() |> 
  map_chr(toJSON) 

jl
#> [1] "{\"id\":[1],\"text\":[\"this is a string\"]}"      
#> [2] "{\"id\":[2],\"text\":[\"this is another string\"]}"
#> [3] "{\"id\":[3],\"text\":[\"yet another string\"]}"

我需要text为标量。

#> [1] "{\"id\":[1],\"text\":\"this is a string\"}"      
#> [2] "{\"id\":[2],\"text\":\"this is another string\"}"
#> [3] "{\"id\":[3],\"text\":\"yet another string\"}"
pcww981p

pcww981p1#

我们可以使用auto_unbox = TRUE

library(purrr)
library(jsonlite)
d |> 
  transpose() |> 
  map_chr(toJSON, auto_unbox = TRUE)
  • 输出
[1] "{\"id\":1,\"text\":\"this is a string\"}" 
[2] "{\"id\":2,\"text\":\"this is another string\"}"
[3] "{\"id\":3,\"text\":\"yet another string\"}"

相关问题