2012-06-13 27 views
8

私は、コマンドが実行されたときのメモリ使用量を追跡するbashスクリプトを持っています。それは所望のコマンドを生成し、次にcolumn1 = "プログラムによって使用中のメモリ(gigs)"というログを書き込み、カラム2はそれまでに経過した時間を秒で表します。例えば私が何をしたいかRグラフをプロットして保存する

31.282 1470 
31.565 1480 
31.848 1490 
31.989 1500 
32.273 1510 
32.414 1520 
32.697 1530 
32.980 1540 
33.122 1550 
33.405 1560 
6.511 1570 
6.935 1580 
7.502 1590 
7.926 1600 
8.351 1610 
8.775 1620 
9.059 1630 
9.483 1640 
9.908 1650 
10.333 1660 

は、プロセスが完了するまで待機し、その後、時間をかけてメモリ使用量のグラフをプロットし、現在のディレクトリに保存するためにRを使用しています。私はRで遊んでいたと私は私が使用する必要があるコマンドを正確に知る:

> heisenberg <- read.csv(file="4644.log",head=FALSE,sep=" ") 
> plot(heisenberg$V2,heisenberg$V1,type="o",col="red",main="Memory Usage Over Time",xlab="Time (seconds)",ylab="Memory (gigabytes)") 
> text(max(heisenberg$V2),max(heisenberg$V1),max(heisenberg$V1)) #Displays max value 

しかし、私はに引っかかってい一部がjpgまたはPNGとしてグラフを保存しています。または、私はどのように私のbashスクリプト内でこのコマンドを実行することができます。 R言語で書かれた別のスクリプトを絶対に実行して実行する必要がありますか?これはすべてを1つにすることは可能でしょうか?


編集

ここに私のscript.r

png("mem_usage_2965.png",height=800,width=800) 
heisenberg <- read.csv(file="2965.log",head=FALSE,sep=" ") 
plot(heisenberg$V2,heisenberg$V1,type="o",col="red",main="oases_k85",xlab="Time (seconds)",ylab="Memory (gigabytes)") 
text(max(heisenberg),max(heisenberg),max(heisenberg)) 
dev.off() 

ためのコードである誰もがテキストを出力PNGの最大値を印刷しない理由として役立つことはできますか?私はbashのスクリプトのようにそれを呼び出していますR CMD BATCH script.r script.out

+0

なぜ 'heisenberg $ V1'と 'heisenberg $ V2'の' max() 'を計算していませんか?現時点では、**両方の座標(xとy)の 'heisenberg'データフレームの最大値である値を計算しているので、プロットには表示されません。それはプロットの外です。私はあなたが望んでいると思う: '(heisenberg、text(max(V2)、max(V1)、max(V1)))'は少なくともあなたが示した元のコードスニペットによって示唆されたものです。あなたは、新しいコードが元のイエスと一致しないことを認識していますか? –

+0

もっと見ると、今は違いが分かります。それは、単にscript.rをbashスクリプトの出力としてオープンしたためですが、$をエスケープするのを忘れてしまいました。したがって、それらはヌル変数として解釈されました。あなたが言ったように、私はその声明を試してみるでしょう。明確にするために、私が望むのは、グラフに最大値をテキスト表示で表示することです。 –

答えて

12

あなたのプロットがで呼び出しをラップ:

jpeg("myplot.jpg") 
....plot code here.... 
dev.off() 

または

png("myplot.png") 
....plot code here.... 
dev.off() 

を、それぞれのヘルプページを参照してください。他の引数の詳細については?png

がPNGの場合、これは次のようになります。

png("my_plot.png", height = 800, width = 600) 
plot(heisenberg$V2,heisenberg$V1,type="o",col="red",main="Memory Usage Over Time",xlab="Time (seconds)",ylab="Memory (gigabytes)") 
text(max(heisenberg$V2),max(heisenberg$V1),max(heisenberg$V1)) #Displays max value 
dev.off() 

bashスクリプトでこれを実行しているとして、あなたは、データをロードし、プロットを描画するRコードを含むスクリプトを実行するために、Rを起動する必要があります。このためにいくつかのオプションがあり、2は以下のとおりです。

R CMD BATCH --no-save --no-restore my_script.R 

またはmy_script.Rはプロットを生成するために必要な構文的に有効なRコードを含むテキストファイルですRscript

Rscript my_script.R 

を使用しています。

+0

これは私のbashスクリプトでこれを行う方法はありますか?コマンドラインでRを使用することは可能ですか? –

+1

source( "file.r") - Rコマンドのファイルを実行します。 – LanceH

+0

Rへのスクリプトインターフェイスの詳細については '?RScript'を参照してください。他の方法、つまり' R CMD BATCH 'を使用しています。しかし、これは別の質問ですので、そのトピックに関する別の質問をする必要があります。 –

関連する問題