2013-08-16 13 views
5

Rstudio'da bir R komut dosyası yazıyorum ve kodun yazıldığı dosyanın adını almak için bir yol istiyorum Bunu yapmak istediğim nedeni, tüm komut dosyalarının alt kısmına yapıştırabileceğim bir kod parçası istiyorum. Böylece, sonuçlarm otomatik olarak sendmailR paketini kullanarak bana e-postayla gönderilir.Şu anda çalıştırılan R betiğinin dosya adı nasıl alınır (sonuçların kolay otomatik e-posta için)

Eklenti adının filename dosyasının yapısını içermesini istiyorum, burada dosya adı yürütülmekte olan dosyanın adıdır ve tarih, yürütme zamanıdır. Bunu yapmanın bir yolu var mı, yoksa her defasında yeni bir komut dosyası çalıştırdığım zaman dosyanın adını el ile yazmalı mıyım?

Benzer bir soru burada sorulmuştur, ancak kullanım farklı olduğu için geçici çözüm asla bir yanıt vermemiştir. Aslında yer, sadece dosya adını gerekmez ve bu hayır,

Find location of current .R file

Rscript: Determine path of the executing script (aynı soru temelde sorar Bu mümkün (ama belki de değil) yapmak gereken budur ama bütün yolu istiyor kabul edilen yanıt)

+0

Betiği nasıl yürütüyorsunuz? 'Rscript'i kullanmak' 'RStudio'da' 'run all '' işlevini kullanın? – mnel

+1

Bu, bağlandığınız ikinci sorudan farklı değil. Tam yola sahip olduğunuzda, dosya adını almak sadece basit bir ifade gerektirir. – joran

+0

teşekkürler, bu sorunun kabul edilmiş bir cevabı yoktu, o yüzden cevaplanmadığını varsaydım. Cevapları kabul etmek gerçekten çok önemlidir, özellikle de bu konuyla ilgili çok fazla ilgisiz cevap olduğunda. – MHH

cevap

1

başka bir geçici çözüm bir ana komut dosyasından senaryolarınızı kaynak olacaktır

script <- "mycode.R" 
source(script) 
... 
doOtherThings(script) 

ve size gereken tüm komut dosyaları aracılığıyla döngü, her neyse onlar hakkında e-postalar gönderebilir.

0

R'nin size senaryo adını vermesinin bir yolunu bilmiyorum. Ama senaryo üst kısmında içerebilir - şöyle:

Final.Name<-paste(Script.Name, Sys.time(), sep="_") 

:) Sonra

Script.Name<-c("current name") 

Sys.time() ve macunu (kullanarak istediğiniz nesneyi yapabilir komutları Eğer sadece run tarihini istiyorsanız Sys.time() yerine Sys.Date() kullanın.

İlgili konular