如何在ubuntu中安装的R中打印循环中的变量?

如何在ubuntu中安装的R中打印循环中的变量?,r,ubuntu,R,Ubuntu,大约3年前,这里也曾提出过类似的问题。与我运行for循环时的问题类似,它在屏幕上显示每个输出变量,而不清除前一个变量 a=matrix(c(1,8,2,5),nrow=2) for(i in 1:4){ print(a*i) } [,1] [,2] [1,] 1 2 [2,] 8 5 [,1] [,2] [1,] 2 4 [2,] 16 10 [,1] [,2] [1,] 3 6 [2,] 24 1

大约3年前,这里也曾提出过类似的问题。与我运行for循环时的问题类似,它在屏幕上显示每个输出变量,而不清除前一个变量

a=matrix(c(1,8,2,5),nrow=2)
for(i in 1:4){
  print(a*i)
}
     [,1] [,2]
[1,]    1    2
[2,]    8    5
     [,1] [,2]
[1,]    2    4
[2,]   16   10
     [,1] [,2]
[1,]    3    6
[2,]   24   15
     [,1] [,2]
[1,]    4    8
[2,]   32   20
为简单起见,对于低维矩阵,我只使用了四次迭代,但我的real For循环有1000多次迭代,并且有一个大维矩阵,这使得输出丑陋且内存密集

我试着回答了上面的问题

for(i in 1:10){
  Sys.sleep(0.1)
  print(i)
  flush.console() 
}
但是它没有改变我的R输出(安装在ubuntu中)中的任何内容,它仍然打印出所有变量

注意:我不是在寻找一个进度条,可能是系统('clear'),正如在对的回答中所建议的那样。例如:

for(i in 1:10){
  system('clear')
  print(matrix(rnorm(9), nc = 3))
  Sys.sleep(0.5)
}

这是你想要的吗?我在Debian(Ubuntu的妈妈)上运行了它,它似乎完成了关键任务

for(ii in 1:10) {
    Sys.sleep(1)
    cat(paste0('\r',ii))
}
它也可以在批处理模式下工作,如果你喜欢的话。我将类似的内容放入一个文件中,并将其作为
R CMD批处理运行--不保存myfile.R

for(ii in 1:10) {
    Sys.sleep(1)
    cat(paste0('\r',ii), file='/dev/tty')
}
诀窍:

  • \r返回到行的开头。在某些环境中,您可能需要将其写为“\\r”,但我在Debian从控制台运行r时没有发现这一点
  • 在批处理模式下,写入/dev/tty,而不是/dev/console

希望有帮助。

您可能应该保存它们,而不是打印它们。另外,您可能应该使用
lappy
,而不是
for