殺殺
有時(shí)候?qū)?shù)據(jù)的處理需要用到j(luò)son格式的文件,json格式其實(shí)就是文本格式的序列化的對(duì)象,可以用簡(jiǎn)單的符號(hào)組成易于理解和計(jì)算機(jī)編碼的格式。
基本的格式類似于:
{
"name" : "file",
"sample" : ["daf","dfgs"],
"patient" : ["a","b","c"]
}
簡(jiǎn)單的txt或csv到j(luò)son的轉(zhuǎn)換可以使用網(wǎng)上提供的編輯器,但是多個(gè)文件的批量轉(zhuǎn)換最好使用代碼。在R中,list格式的對(duì)象可以直接轉(zhuǎn)換為json格式,并輸出。今天總結(jié)的是json的讀入,編輯和寫出。

大概的格式是這樣的?,F(xiàn)在我需要多次修改input和sampleid的內(nèi)容,并輸出很多個(gè)文件。
首先加載包并讀入文件
library(rjson)
library(jsonlite)
data <- fromJSON("demo.json")
data的框架大致是這樣(內(nèi)容不一致)
直接讀成了list的格式。我們就可以使用編輯list的方式去編輯data。
data$sample_id <- 'Glioma_result_2'
data$INPUT <- newdataframe[1:30,]
這邊是修改了兩個(gè)list下的內(nèi)容,如果需要新增,也可以直接輸入如
data$newdata <- "new"
list就編輯好了,接下來(lái)需要將這個(gè)list轉(zhuǎn)換為json的樣子
datajson <- toJSON(data, pretty=T,auto_unbox = T)
datajson2 <- prettify(datajson , indent = 4)
其中pretty參數(shù)指的是需要一些縮進(jìn),可以對(duì)比一下T和F


可以看出很整齊了。
auto_unbox 這個(gè)參數(shù)指的是當(dāng)某個(gè)對(duì)象只包含一個(gè)參數(shù)時(shí),要不要添加[ ]方框。如我的list下的sample_id只有一個(gè)內(nèi)容,這時(shí)候我不需要方括號(hào),因此這個(gè)參數(shù)使用的是T。只有在包含多個(gè)對(duì)象的時(shí)候才會(huì)用[ ]。
都編輯好之后我們就需要輸出文件,使用代碼寫出。
cat(datajson2 , file = "result.json", fill = FALSE, labels = NULL, append = FALSE)
批量使用的時(shí)候,把這幾行代碼放進(jìn)for循環(huán)中就可以了,file = " "的代碼可以用paste函數(shù),這樣可以輸出不同的文件名。