杀杀
有时候对数据的处理需要用到json格式的文件,json格式其实就是文本格式的序列化的对象,可以用简单的符号组成易于理解和计算机编码的格式。
基本的格式类似于:
{
"name" : "file",
"sample" : ["daf","dfgs"],
"patient" : ["a","b","c"]
}
简单的txt或csv到json的转换可以使用网上提供的编辑器,但是多个文件的批量转换最好使用代码。在R中,list格式的对象可以直接转换为json格式,并输出。今天总结的是json的读入,编辑和写出。
大概的格式是这样的。现在我需要多次修改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可以看出很整齐了。
auto_unbox 这个参数指的是当某个对象只包含一个参数时,要不要添加[ ]方框。如我的list下的sample_id只有一个内容,这时候我不需要方括号,因此这个参数使用的是T。只有在包含多个对象的时候才会用[ ]。
都编辑好之后我们就需要输出文件,使用代码写出。
cat(datajson2 , file = "result.json", fill = FALSE, labels = NULL, append = FALSE)
批量使用的时候,把这几行代码放进for循环中就可以了,file = " "的代码可以用paste函数,这样可以输出不同的文件名。