【问题标题】:Nested for loop with JSON file使用 JSON 文件嵌套 for 循环
【发布时间】:2016-04-14 14:32:56
【问题描述】:

我想这个问题以前没有被问过,我似乎找不到它。

我有一个嵌套的 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、因子组等)

谢谢!

【问题讨论】:

标签: json r for-loop


【解决方案1】:

尝试使用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")
}

【讨论】:

  • cat(Position$Symbol"\n")
  • 我知道这不正确,但不确定您的意思。
  • 哦,我想这就是你的意思:cat(Position$Symbol, sep = "\n")
  • 这不是我的意思。 \n 将添加一个新行,因此您只希望在最外层循环。
  • 您可能想要一个列表,其中每个列表项都是每个因素的数据向量。
猜你喜欢
  • 2021-12-11
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多