在R中将数据框导出为JSONL并指定字段为标量字符串
解决R语言导出JSONL时指定字段为标量字符串的问题
要让text字段输出为标量字符串,只需在转JSON前将每行的text从长度为1的向量提取为单个元素的标量即可,具体实现如下:
library(tidyverse) library(jsonlite) d <- tibble( id = 1:3, text = c("this is a string", "this is another string", "yet another string") ) # 处理每行数据,将text转为标量后生成JSON字符串 jl <- d |> transpose() |> map(function(row) { # 提取text向量中的单个元素,转为标量 row$text <- row$text[[1]] toJSON(row) }) |> map_chr(as.character) # 查看输出结果 jl #> [1] "{\"id\":[1],\"text\":\"this is a string\"}" #> [2] "{\"id\":[2],\"text\":\"this is another string\"}" #> [3] "{\"id\":[3],\"text\":\"yet another string\"}"
原理说明
transpose()将数据框转换为每行一个列表的结构,默认情况下列表中的id和text都是长度为1的R向量,toJSON()会将这类向量转为JSON数组(带方括号)。通过row$text[[1]]提取向量中的单个元素,把它转为标量后,toJSON()就会将其输出为不带方括号的JSON字符串值,同时保留id的数组格式。
内容的提问来源于stack exchange,提问作者shs
相关产品推荐
相关产品推荐

