парсинг JSON в R и ключи доступа в качестве переменных - PullRequest
0 голосов
/ 03 ноября 2019

Я хочу проанализировать вложенный файл JSON в R со структурой, подобной этой:

{
 "HIP":
       {
        "prenatal":{
                    Cluster0:{"x":23,"y":34},                                 
                    Cluster1:{"x":21,"y":20}                                            
                    ...
                    },
        "early_childhood":{
                  Cluster0:{"x":23,"y":34},                                                                    
                  Cluster1:{"x":21,"y":20}                                                           
                  ...
                   },
        "adulthood":{
              Cluster0:{"x":23,"y":34},                                                                             
              Cluster1:{"x":21,"y":20}                                                                             
              ...
                    } }, ... }

Чтобы проанализировать этот файл JSON, я загружаю его, а затем перебираю ключи таким образом:

library("rjson")

fisherjson <- fromJSON(file = "acc.json")
tabledata= data.frame(pathwayname= character(), CE_Stage_Cluster=integer(), Pvalue = double(), Oddsratio = double(), Lower_CI=double(),Upper_CI=double(),stringsAsFactors=FALSE)
regions=(names(fisherjson))
stages=c("prenatal","early_childhood","adulthood")
#print(fisherjson$HIP$prenatal$Cluster10)
for (region in regions) 
{
    for (stage in stages)
        { 
          i=1
          for (clus in stage)
              {
               tabledata[i, 1]=clus$Cluster_num
               tabledata[i, 2]=clus$x
               mat <- matrix(c(clus$x,clus$m_x,clus$T_x,clus$n), nrow = 2, ncol=2)
               fmat <- fisher.test(mat)
               tabledata[i, 3]=fmat$p.value
               tabledata[i, 4]=fmat$estimate
               tabledata[i, 5]=fmat$conf.int[1]
               tabledata[i, 6]=fmat$conf.int[2]
               i=i+1
              }

              write.csv(tabledata, file=paste0("acc_",region,"_",stage,".csv"))
        }
}

Проблема в том, что я не могу получить доступ к «региону» и «сцене» при создании имени файла. Более того, я не думаю, что данные уровня кластера также выбираются правильно. Я думаю, что они помещают фактические данные вместо региона и стадии. Есть ли лучший способ анализа файла JSON?

...