2012-06-13 38 views
8

Bir komut çalıştırıldığında zaman içinde bellek kullanımını izleyen bir bash komut dosyası var. İstenen komutu oluşturur ve daha sonra bir günlük, column1 = "program tarafından kullanılan bellek (gigs)" yazar ve sütun 2 saniyeler içinde geçen süredir. Örneğin. Yapmak istediğim neÇizim ve kaydetme R grafiği

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 

zamanla bellek kullanımı grafiğini çizmek ve geçerli dizinde kaydetmek için Ar kullanmak sonra işlem tamamlanana kadar bekleyin ve olduğunu. Ben R ile de oynuyordum ve ben kullanmak gerekir tam olarak ne komutlarını biliyorum:

> 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 

Ama şaşırıp kısmı jpg veya png olarak grafiği kaydediyor. Ya da bu komutu benim betik betiğimde nasıl uygulayabilirim. R dilinde yazılmış başka bir betiğe sahip olmalıyım ve onu çalıştırmalı mıyım? Hepsi bir arada yapmak mümkün mü? İşte


Düzenleme

benim script.r kodudur

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() 

herkes metin outputted png maksimum değeri yazdırmıyor neden olarak yardımcı olabilir misiniz? R CMD BATCH script.r script.out

+0

Neden "heisenberg $ V1" ve "heisenberg $ V2" terimlerinin max() 'sini hesaplamıyorsunuz? Şu anda ** heisenberg veri çerçevesinin ** hem ** koordinatları (x ve y) için en büyük değer olan bir değeri hesaplıyorsunuz; arsa dışında.Bence şunu istiyorum: 'ile birlikte (heisenberg, metin (maks (V2), maks (V1), maks (V1))) en azından gösterdiğiniz orijinal kod snippet'inin önerdiği şey budur. Yeni kodun orijinal evet ile eşleşmediğini biliyor musunuz? –

+0

Daha yakından baktığımda, evet şimdi farkı fark ediyorum. Thats sadece script.r açtım çünkü bash betiği çıktı, ama ben kaçmayı unutmuştum. Böylece, boş değişkenler olarak yorumlandılar. Söylediğin gibi ifadeyi deneyeceğim. Açık olmak gerekirse, istediğim metin üzerinde bir metin ekranı ile maksimum değeri göstermek. –

cevap

12

Hikayenizin sarın çağırır.

bir PNG için bu olurdu:

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() 

bir bash komut dosyası bu çalışan gelince, verileri yüklemek ve araziler çizmek R kodunu içeren komut dosyasını çalıştırmak için R çağırmak gerekir. Bunun için birkaç seçenek vardır, iki şunlardır:

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

veya my_script.R araziler üretmek için gerekli sentetik olarak geçerli R kodu içeren bir metin dosyasıdır Rscript

Rscript my_script.R 

kullanın.

+0

Peki bu benim bash betiğimde bunu yapmanın bir yolu var mı? R komut satırında kullanmak mümkün mü? –

+1

source ("file.r") - Bu, R komutlarının bir dosyasını yürütür. – LanceH

+0

Bir komut dosyası arabiriminin R'ye ilişkin ayrıntıları için '? RScript '' e bakınız. Başka yollarla, yani' R CMD BATCH' kullanılarak. Ama bu başka bir soru, bu konuda başka bir soru sormalısınız. –

2

Sadece bir bash betiğinde arıyorum. http://stat.ethz.ch/R-manual/R-devel/library/grDevices/html/png.html

temelde ile bir .png tasarrufu başlatmak üzere R söyle:

png(file="blah.png") 

sonra kullanın:

dev.off() 

normale dönmesi. diğer argümanlar detayları için ?png:

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

veya

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

kendi yardım sayfalarına bakınız: in

İlgili konular