【问题标题】:Using loops to print output into Knitr使用循环将输出打印到 Knitr
【发布时间】:2013-05-29 12:34:01
【问题描述】:

为这个问题道歉 - 我相信答案很简单

我有几个包含对象的列表。我正在通过 knitr 将它们运行到 HTML 中,并希望控制输出的顺序。

此代码打印所有 list1 输出,然后是所有 list1 绘图,然后是所有 list2 输出,然后是所有 list2 绘图

lapply(1:4, function(i){
  my.list1[[i]]
  plot(my.list1[[i]])
  my.list2[[i]]
  plot(my.list2[[i]])
})

我希望它打印第一个 list1 输出,然后是第一个 list1 绘图,然后是第一个 list2 输出,然后是第一个 list2 绘图。然后进入循环的第二次交互。

换句话说,我希望函数在迭代之前完成所有命令,而不是在移动到下一个命令之前完成所有迭代。

这个可以吗?

谢谢

【问题讨论】:

    标签: r knitr


    【解决方案1】:

    你应该在调用 plot 命令之前/之后添加一个plot.new 以不在同一个地方绘图,并在调用它时调用print 来强制显示。

    试试这个例子:

    lapply(1:4, function(i){
      print(my.list1[[i]])
      plot(my.list1[[i]])
      plot.new()
      print(my.list2[[i]])
      plot(my.list2[[i]])
      plot.new()
      })
    

    【讨论】:

    • @EdG 我添加了一个简短的解释。
    • 非常感谢 - 我试图弄清楚 plot.new 在做什么
    猜你喜欢
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    相关资源
    最近更新 更多