嵌套for循环与JSON文件

时间:2016-04-14 14:32:57

标签: json r for-loop

我认为之前没有问过这个问题,我似乎无法找到它。

我有一个嵌套的JSON文件,我想从中提取某些值。我玩弄了sapply然后最终决定使用嵌套的for loop序列,见下文:

for(Factor in fund$Factors)
{

  print(Factor$Name)

  for(FactorGroup in Factor$FactorGroups)
  {

    print(FactorGroup$Name)

    for(Model in FactorGroup$Models)
    {
      print(Model$Name )

      for(Position in Model$Positions)
      {

          print(Position$Symbol)
          print(Position$Quantity)
          print(Position$Risk)
          print(Position$MaxRisk)
          print(Position$Daysleft)

      }
    }
  }
}

使用这个我可以准确地提取我需要的东西,但它是逐行进行的,所以输出看起来像这样:

[1] "factor 1"
[1] "factor group 1"
[1] "model"
[1] "position 1"
[1] 1
[1] -769.1946
[1] -7433.627
[1] 14
[1] "position 2"
[1] 5
[1] -3724.63
[1] -12062.5
[1] 76

这种情况持续了大约900行。我想知道的是,如果它们是组织此输出的更好方法。理想情况下,我想将每个完整序列连接到一个向量中,然后转到下一个循环。例如,有了这个,我们上面的输出将读取如下内容:

[1] "factor 1" - "factor group 1" - "model" - "position 1" - 1 - -769.1946 - -7433.627 - 14
[1] "factor 1" - "factor group 1" - "model" - "position 2" - 5 - -3724.63 - -12062.5 - 76

这将迭代直到它循环遍历整个文件(例如,通过因子2,因子组等)

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用cat代替print。然后就在最后一个右括号之前,添加

cat("\n")

print每次使用时都会打印一个新行。 cat将附加到同一行。

示例脚本

for(Factor in fund$Factors)
{

  cat(Factor$Name)
  cat(" - ")

  for(FactorGroup in Factor$FactorGroups)
  {

    cat(FactorGroup$Name)
    cat(" - ")

    for(Model in FactorGroup$Models)
    {
      cat(Model$Name )
      cat(" - ")

      for(Position in Model$Positions)
      {

          cat(Position$Symbol)
          cat(" - ")
          cat(Position$Quantity)
          cat(" - ")
          cat(Position$Risk)
          cat(" - ")
          cat(Position$MaxRisk)
          cat(" - ")
          cat(Position$Daysleft)    
      }
    }
  }
  cat("\n")
}