2013-08-16 6 views
5

Ich schreibe ein R-Skript in Rstudio, und ich möchte den Namen der Datei, in der der Code geschrieben ist, herausfinden Der Grund, warum ich dies tun möchte, ist, dass ich ein Stück Code möchte, das ich am Ende aller meiner Skripte anheften kann, damit meine Ergebnisse automatisch per E-Mail an mich gesendet werden, indem ich das sendmailR-Paket verwende.Wie bekomme ich den Dateinamen des aktuell ausgeführten R-Skripts (für eine einfache automatische E-Mail-Funktion)?

Ich möchte, dass mein Anlagename die Struktur filename_date hat, wobei Dateiname der Name der Datei ist, die ausgeführt wird, und date ist der Zeitpunkt der Ausführung. Gibt es eine Möglichkeit, dies zu tun, oder muss ich den Namen der Datei jedes Mal manuell eingeben, wenn ich ein neues Skript ausführe.

Eine ähnliche Frage wurde hier gestellt, aber da die Verwendung anders war, lieferte die Problemumgehungsmethode keine Antwort. Ich brauche eigentlich nicht die Lage, nur die Dateinamen und ich denke, das ist das, was sollte es machbar machen (aber vielleicht auch nicht)

Find location of current .R file

Rscript: Determine path of the executing script (fragt im Grunde die gleiche Frage, sondern will den gesamten Pfad, keine akzeptierte Antwort)

+0

Wie führen Sie das Skript aus? Mit 'Rscript? '' 'Run all' in' RStudio' benutzen? – mnel

+1

Dies ist nicht anders als die zweite Frage, die Sie verknüpft haben. Sobald Sie den vollständigen Pfad haben, erfordert das Abrufen des Dateinamens nur eine einfache Regex. – joran

+0

danke, diese Frage hatte keine angenommene Antwort, also nahm ich einfach an, dass sie nicht beantwortet wurde. Es ist wirklich wichtig, Antworten zu akzeptieren, vor allem wenn es so viele unabhängige Antworten auf diesen Thread gibt. – MHH

Antwort

1

Eine andere Lösung wäre, um Ihre Skripte von einem Master-Skript zur Quelle,

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

und man konnte alle Skripte Schleife durch Sie haben, senden Sie E-Mails über sie, was auch immer.

0

Ich weiß nicht, wie R Ihnen den Skriptnamen geben kann. Aber man kann es an der Spitze des Skripts umfassen - etwa so:

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

dann die Sys.time mit() und Paste() Befehle, die Sie das Objekt machen könnten Sie wollen:

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

Wenn Sie nur das Datum des Laufs möchten, verwenden Sie Sys.Date() anstelle von Sys.time().

Verwandte Themen