2016-10-06 3 views
2

約3年前に同様の質問がありましたHow do I print a variable inside a for loop to the console in real time, as the loop is running, in R?。その問題は、forループを実行したときと同じように、前の変数をクリアすることなくすべての出力変数を画面に表示します。簡単にするためにubuntuにインストールされたRのループ内で変数をプリントするには?

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 

私は、低次元の行列のためにのみ4回の反復を使用していますが、ループのための私の本当のは、1000回の以上の反復と出力が醜いとメモリを大量になり、大きな次元マトリックスを持っています。

は、私は上記聞かれる質問

for(i in 1:10){ 
    Sys.sleep(0.1) 
    print(i) 
    flush.console() 
} 

solutionを試してみたが、それは(Ubuntuの中に設置)私のR出力には何も変更didntの、それはまだ、すべての変数

NOTEを出力:Iプログレスバーを探していません

+0

おそらくそれらを保存し、印刷しないでください。また、おそらく、 'for'ではなく' lapply'を使用しているはずです。 – alistaire

答えて

2

おそらく、Function to clear the console in Rへの回答で示唆されているように、system('clear')です。例:

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

これは必要な機能ですか?私はDebian(Ubuntuのママ)でそれを走らせました、そして、それは重要な仕事をするようでした。

for(ii in 1:10) { 
    Sys.sleep(1) 
    cat(paste0('\r',ii)) 
} 

これはあなたのことであればバッチモードでも動作します。 rは行の先頭に戻ります\

  • :私はトリックをファイルにに似た何かを置く、とR CMD BATCH --no-save myfile.R

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

    としてそれを実行しました。環境によっては、 '\\ r'と書かなければならないかもしれませんが、コンソールからRを実行しているDebianで見つけられませんでした。

  • バッチモードでは、/ dev/ttyの、ではないの/ dev /コンソールに役立ちます

希望に書き込みます。

関連する問題