2017-12-06 8 views
1

Ich habe ein logistisches gemischtes Modell ausgeführt, das ungefähr 3 Stunden dauerte, um zu passen. Ich habe das Modell als Objekt in meiner globalen Umgebung gespeichert und möchte die Modellzusammenfassung in mein R-Abschriftdokument aufnehmen. Ich möchte jedoch nicht, dass knitr das Modell ausführt, wenn der HTML-Code zusammengefügt wird (das würde noch 3 Stunden dauern). Ich möchte nur die Zusammenfassung des Modells drucken, das ich bereits ausgeführt habe.Modellzusammenfassung in R-Abschrift drucken, ohne laufendes Modell

Knitr gibt einen Fehler aus, der besagt, dass das Modellobjekt nicht in seinem Gültigkeitsbereich liegt.

Wie bekomme ich knitr, um auf das Modellobjekt zuzugreifen, das ich bereits erstellt habe, und das Modell nicht erneut auszuführen, wenn ich das Dokument kompiliere?

+0

nehme ein Ansatz ist, dass Sie das Modellobjekt retten konnte, und dann lese es in deiner rmd-Datei ein (siehe saveRDS) – user20650

Antwort

1

Ich würde das Modell als RDS-Objekt speichern, und laden Sie es dann in das RMarkdown-Dokument. Sie können dann das RDS-Objekt laden, während Sie diese Tatsache ausblenden, wenn Sie den von Ihnen ausgeführten Code einfach darstellen möchten. Zum Beispiel finden Sie den Code, unter dem passen und sparen würde/nachladen ein lineares Modell:

fit <- lm(x ~ y) 
saveRDS(fit, "fit.RDS") 

Dann im RMarkdown Dokument

## (if you do not wish to hide the fact that you are loading it, then omit `echo = FALSE`) 
```{r, echo = FALSE} 
fit <- readRDS("fit.RDS") 
## To show the code that fit the model. 
## `eval = FALSE` means the code is not run while knitting. 
```{r, eval = FALSE} 
fit <- lm(x ~ y) 
``` 
+0

Großartig! Fühlen Sie sich frei, die Antwort zu akzeptieren, wenn es Ihr Problem gelöst hat :) – aocall

0

Als erstes sollten Sie Ihren Arbeitsbereich mit ls() überprüfen. Wenn das Modell nicht vorhanden ist, müssen Sie es erneut ausführen. Wenn Sie es sehen, können Sie einfach die Zusammenfassung in der Konsole drucken. Wenn Sie versuchen, Ihr Dokument zu stricken, wird es die gesamte rmd

+0

Danke, aber das Ziel ist es, zu vermeiden, dass die ganze rmd ausgeführt wird und das Modell erneut ausgeführt werden muss (das dauert 3 Stunden). Das Modell befindet sich im Arbeitsbereich. Ich möchte nur die Zusammenfassung drucken. Die Verwendung der Zusammenfassung (Modell) in der RMD funktioniert jedoch nicht, da KNIT das Modell in der globalen Umgebung nicht sehen kann. – Darren

+0

Haben Sie versucht, einfach die Zusammenfassung (Modell) in der Konsole auszuführen? Das Problem bei der Verwendung eines RMD mit einer langen Laufzeit ist, dass Sie nicht nur einen Abschnitt davon stricken können, denn jedes Mal, wenn Sie es stricken, hat es keine Erinnerung an die Objekte, die beim letzten Stricken entstanden sind. Ich empfehle entweder die Konsole oder nur ein einfaches .R-Skript, wenn es keine Möglichkeit gibt, die Laufzeit zu verringern – stevebroll

+0

Ja. Es funktioniert in der Konsole, weil das Modell in der globalen Umgebung gespeichert ist. Wie erkenne ich dieses Objekt, anstatt zu versuchen, ein neues Objekt zu erstellen? Ziel ist es, die Modellzusammenfassung mit meinen Mitarbeitern über die rmd-Ausgabe zu teilen. Nicht nur ich selbst. – Darren