2013-08-16 9 views
5

Piszę skrypt R w Rstudio, i chciałbym w jakiś sposób uzyskać nazwę pliku, w którym napisany jest kod w. Powodem, dla którego chcę to zrobić, jest to, że chcę fragment kodu, który mogę umieścić na dole wszystkich moich skryptów, aby moje wyniki były automatycznie wysyłane do mnie pocztą elektroniczną za pomocą pakietu sendmailR.Jak uzyskać nazwę pliku aktualnie wykonywanego skryptu R (dla łatwego automatycznego wysyłania e-maili z wynikami)

Chciałbym, aby moja nazwa załącznika miała strukturę filename_date gdzie nazwa pliku jest nazwą wykonywanego pliku, a data jest czasem wykonania. Czy istnieje sposób na zrobienie tego, czy też będę musiał ręcznie wypisać nazwę pliku za każdym razem, gdy uruchomię nowy skrypt.

Podobnego pytania zadawano tutaj, ale ponieważ użycie było inne, rozwiązanie problemu nigdy nie dało odpowiedzi. I rzeczywiście nie trzeba lokalizację, tylko nazwę pliku i myślę, że to, co należy zrobić to wykonalne (ale może nie)

Find location of current .R file

Rscript: Determine path of the executing script (pyta zasadniczo takie samo pytanie, ale chce całą ścieżkę, nie zaakceptowana odpowiedź)

+0

Jak wykonujesz skrypt? Używając 'Rscript?' Użyj 'run all' w' RStudio'? – mnel

+1

Nie różni się to od drugiego pytania, z którym się łączyłeś. Po uzyskaniu pełnej ścieżki uzyskanie nazwy pliku wymaga jedynie prostego wyrażenia regularnego. – joran

+0

dziękuję, to pytanie nie miało akceptowanej odpowiedzi, więc po prostu założyłem, że nie otrzymałem odpowiedzi. Bardzo ważne jest, aby akceptować odpowiedzi, zwłaszcza gdy jest to tak wiele niepowiązanych odpowiedzi podanych w tym wątku. – MHH

Odpowiedz

1

Innym Rozwiązaniem byłoby źródło skrypty ze skryptu master

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

i można pętli wszystkich skryptów masz, wysyłać e-maile o nich cokolwiek.

0

Nie znam sposobu, żeby R podawał ci nazwę skryptu. Ale można umieścić go w górnej części skryptu - tak:

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

Następnie używając Sys.time() i wklej() Polecenia można uczynić obiekt, który ma:

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

Jeśli chcesz tylko datę uruchomienia, użyj Sys.Date() zamiast Sys.time().

Powiązane problemy