1

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

我有几个包含对象的列表。我正在通过 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 绘图。然后移动到循环的第二次交互。

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

这可以做到吗?

谢谢

4

1 回答 1

2

您应该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()
  })
于 2013-05-29T12:50:29.080 回答