2016-10-18 3 views
1

Ich habe einen Bericht in R, der Diagramme erzeugt und etwas Text hat. Der Text enthält einen Verweis auf die vorherige Woche, die wiederum auf einem Datenrahmen basiertRMarkdown Einen Report parametrieren

Ich kann es nicht zum Laufen bekommen. Unten ist der Code. Hat jemand sehen, das Problem

bekomme ich folgende Fehlermeldung

Error in yaml::yaml.load(enc2utf8(string), ...) : Scanner error: mapping values are not allowed in this context at line 5, column 9 Calls: ... yaml_load_utf8 -> mark_utf8 -> -> .Call Execution halted

--- 
title: "Foo" 
author: "John Smith" 
date: "18 October 2016" 
output: word_document 
    params: 
    weeknr: !r max(data$WEEKNRs) 
--- 

```{r} 

# creates the dataframe referenced in the header 
source('transform.R') 

``` 

All, 

Please find below [attached](www.stackexchange.com) report for week ``r params$weeknr`` 
+0

Sind Daten in Ihrer globalen Umgebung zufällig? Sie müssen Daten in Ihrem Abschriften-Dokument selbst erstellen. Rmarkdown ist ein eigenständiges Skript und zieht daher kein Objekt, das von anderen Skripten in die globale Umgebung geschrieben wurde. Mit anderen Worten, Sie können kein Objekt in Ihrem Param-Abschnitt verwenden, es sei denn, Sie rufen den Rmarkdown mit einer Renderfunktion auf. – MorganBall

+0

Versuchen Sie, weeknr auf einen beliebigen Wert zu setzen und dann 'render (rmarkdowndoc.rmd, params = (weeknr = max (Daten $ WEEKNRs))' – MorganBall

+0

Hallo @Morgan, die Variable selbst ist im Grunde in der letzten Woche in den Datenrahmen 'Daten '. Durch den Bezug von transform.R sollte der Datenrahmen erstellt und in der Datei gespeichert werden.Wäre Rmarkdown in der Lage, dies aufzuheben? In Ihrem zweiten Kommentar wird diese Information also in einen R Chunk eingegeben? –

Antwort

1

Der Fehler, den Sie erhalten, ist, weil Sie gegliederte params: auf der Linie nach word_document.

Es ist möglich, Code in der Kopfzeile zu haben, aber Sie müssen es anders formatiert, finden YAML current date in rmarkdown

In Ihrem Fall können Sie so etwas wie (mit dem Titel-Tag verwendet, um der Lage sein, leicht zu sehen das Ergebnis):

--- 
title: "`r source('transform.R'); max(data$WEEKNRs)`" 
---