Chciałbym utworzyć jeden z plików wyjściowych w formacie R, w którym nazwa pliku wyjściowego powinna być zdefiniowana w dokumencie. Czy istnieje sposób, aby przekonać markdown do manipulowania wyjściową nazwę pliku w taki sposób? Idealnie chciałbym przekazać nazwę pliku przez r porcję.R Markdown - zmienna nazwa wyjściowa
Odpowiedz
Możesz zachować prostotę korzystania z Knit
przycisk RStudio i powtarzalność nagłówku YAML przy użyciu nieudokumentowane knit
hak przedefiniować co przycisk robi (funkcja domyślnej nazwie jest rmarkdown::render
). Parametr output_file
funkcji renderowania określa nazwę pliku, więc ustawiając go, zastępujesz standardowe zachowanie przy użyciu tego samego prefiksu co nazwa pliku wejściowego.
np. aby zawsze wysyłany plik o nazwie myfile.pdf
knit: (function(inputFile, encoding) { rmarkdown::render(inputFile, encoding = encoding, output_file = file.path(dirname(inputFile), 'myfile.pdf')) })
Funkcja może być anonimowy jedno-liner, jak również importowane z pakietu, jak widać here z slidify.
Możesz ustawić własne nagłówki YAML (nie wiem, czy tak ogólnie się to zaleca), dostępne pod rmarkdown::metadata$newheader
, ale nie wydają się dostępne z tego rodzaju funkcji, o ile widzę.
Jeśli chodzi o przekazywanie nazwy pliku z fragmentu R ... jeśli chodzi o fragmenty kodu poniżej nagłówka YAML, z mojego doświadczenia nie sądzę, że jest to możliwe (?). Nagłówki mogą zawierać wbudowane polecenia R (pojedyncze zamknięcie załączone, zaczynając od r
), ale najwyraźniej nie dla tej funkcji przechwytującej.
Podobne:
- Rmarkdown GitHub repo problem - output format-specific
output_file
- Blog postu napisałem po tym pytaniu on more elaborate uses of the
knit:
hook/odpowiadającej GitHub wiki notes
Błąd w rcmcdown :: metadata $ tytuł <- "Mój tytuł": obiekt "rmarkdown" nie został znaleziony – jzadra
@ yihuixie, czy mogę przekazać parametry Cokolwiek na nazwy plików wyjściowych w ten sposób? Mój przecinek wykorzystuje params $ dane do pobrania odpowiedniego pliku danych, ale nie wygląda na to, że działa on w twoim jednolinijkowym - 'params $ dane nie znalezione'. Mogę przekazać wszystko, co chcę, ze skryptu z 'rmarkdown :: render (params = list (data =" Oct2017data "), output_file =" Oct2017_analysis.html ")', ale oczywiście chcę móc go wpisać tylko raz. – StasK
To jest dość dużo, co mam zrobić:
rmarkdown::render('my_markdown_report.Rmd',
output_file = paste('report.', Sys.Date(),
'.pdf', sep=''))
Mam trzy scenariusze - jeden ciągnie dane i przetwarza je, drugi utworzone wykresy & tabele dla raportu. Trzeci tworzy raport oparty na pliku przeceny. Kod widać powyżej jest częścią trzeciego scenariusza
Do tej pory używałam tylko polecenia KnStudios knit, aby skompilować jakiś plik.Jeśli rozumiem cię poprawnie, tworzysz rzeczywisty plik przeceny za pomocą poleceń R, a nawet sterujesz knowaniem przecinków za pomocą poleceń R? Dotychczas nie znałem tego podejścia, ale przyjrzę mu się bliżej. Do tej pory przygotowywałam dane i przetwarzałam je w pierwszym skrypcie, ale już w drugim kroku ręcznie utworzyłem plik oceny, umieszczając np. różne źródła danych w niektórych raportach. – Sosel
Tak. plik markdown jest osobnym skryptem, odczytuje dane, umieszcza wykresy i tabele razem. Nazywa się to jednak z zewnętrznego skryptu - możesz także uruchomić/uruchomić go z Rstudio i utworzy plik o tej samej nazwie. Ja jednak nazywam to oddzielnym skryptem, a po rmarkdown tworzy plik wynikowy pdf jest kopiowany do różnych miejsc. – ilya
ślad za co @ilya napisał, ta strona ma świetny przykład demonstrujący to, co opisują, czyli jak tworzyć wiele powtarzalnych raportów z tego samego dokumentu .Rmd :
http://www.reed.edu/data-at-reed/software/R/markdown_multiple_reports.html
Strona internetowa wykorzystuje dwa skrypty, jeden skrypt R i jeden skrypt Rmarkdown tworzenia wielu raportów. Użyłem go jako szablonu do mojej własnej pracy i uznałem to za bardzo użyteczne.
Czy mógłbyś opublikować swoje polecenie? czy chcesz nazywać pliki "dynamicznie"? 'wklej0 (" plik _ ", x,". pdf ")?' x może być datą lub nazwą zestawu danych – rmuc8
Do tej pory używałem RStudio, wykonując polecenie dzianiny, bez szukania więcej szczegółów. Ale powinienem przyjrzeć się odpowiedzi na ilyas, brzmi jak zdecydowanie jaśniejsze podejście. – Sosel