R语言写不出来啊!

R语言 Json文件编辑/读写

2021-10-25  本文已影响0人  不会生信哟

杀杀

有时候对数据的处理需要用到json格式的文件,json格式其实就是文本格式的序列化的对象,可以用简单的符号组成易于理解和计算机编码的格式。
基本的格式类似于:
{
"name" : "file",
"sample" : ["daf","dfgs"],
"patient" : ["a","b","c"]
}
简单的txt或csv到json的转换可以使用网上提供的编辑器,但是多个文件的批量转换最好使用代码。在R中,list格式的对象可以直接转换为json格式,并输出。今天总结的是json的读入,编辑和写出。

现在有一个json文件,用notepad打开:

大概的格式是这样的。现在我需要多次修改input和sampleid的内容,并输出很多个文件。
首先加载包并读入文件

library(rjson)
library(jsonlite)
data <- fromJSON("demo.json")
data的框架大致是这样(内容不一致)

直接读成了list的格式。我们就可以使用编辑list的方式去编辑data。

data$sample_id <- 'Glioma_result_2'
data$INPUT <- newdataframe[1:30,]

这边是修改了两个list下的内容,如果需要新增,也可以直接输入如

data$newdata <- "new"

list就编辑好了,接下来需要将这个list转换为json的样子

datajson <- toJSON(data, pretty=T,auto_unbox = T)
datajson2 <- prettify(datajson , indent = 4)
其中pretty参数指的是需要一些缩进,可以对比一下T和F 下面这个图是参数为F的时候,可以看出没有任何的缩进,回车和空格,所以一般我们会选择T的参数,但是其实上图的缩进也很不规则,没有标准的 tab缩进,INPUT中的对象也没有分行。因此可以使用prettify函数,将格式规整。规整后的格式:

可以看出很整齐了。
auto_unbox 这个参数指的是当某个对象只包含一个参数时,要不要添加[ ]方框。如我的list下的sample_id只有一个内容,这时候我不需要方括号,因此这个参数使用的是T。只有在包含多个对象的时候才会用[ ]。

都编辑好之后我们就需要输出文件,使用代码写出。

cat(datajson2 , file = "result.json", fill = FALSE, labels = NULL, append = FALSE)

批量使用的时候,把这几行代码放进for循环中就可以了,file = " "的代码可以用paste函数,这样可以输出不同的文件名。

上一篇下一篇

猜你喜欢

热点阅读