我认为之前没有问过这个问题,我似乎无法找到它。
我有一个嵌套的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,因子组等)
谢谢!
答案 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")
}