Ich weiß nicht, ob dies eine besonders große Lösung ist, aber es ist zu lang für einen Kommentar, geht so hier. Ich schaute auf rmarkdown::render
und ich glaube nicht, was Sie wollen, ist möglich, es sei denn Sie selbst definieren render
. Sehen Sie sich Zeile 85 und folgende an:
metadata <- paste("\n", "---\n", "title: \"", input,
"\"\n", "author: \"", Sys.info()[["user"]], "\"\n",
"date: \"", date(), "\"\n", "---\n", sep = "")
if (!identical(encoding, "native.enc"))
metadata <- iconv(metadata, to = encoding)
cat(metadata, file = knit_input, append = TRUE)
Dies wird nicht von einer Bedingung gesteuert. So ein chaotischer Weg ist, render
neu zu definieren und eine seiner Linien zu ersetzen. Ich Anleihe eine sachdienliche Antwort auf diese Frage: Editing R functions
body(render)[[25]] <- substitute(
if (identical(tolower(tools::file_ext(input)), "r")) {
spin_input <- intermediates_loc(file_with_meta_ext(input,
"spin", "R"))
file.copy(input, spin_input, overwrite = TRUE)
intermediates <- c(intermediates, spin_input)
spin_rmd <- knitr::spin(spin_input, knit = FALSE, envir = envir,
format = "Rmd")
intermediates <- c(intermediates, spin_rmd)
knit_input <- spin_rmd
# Our edited code starts here!
metadata <- paste("\n", "---\n", "title: \"", getOption("yaml_title"), "\"\n",
"author: \"", getOption("yaml_author"), "\"\n", "date: \"",
getOption("yaml_date"), "\"\n", "---\n", sep = "")
# Our edited code ends here!
if (!identical(encoding, "native.enc"))
metadata <- iconv(metadata, to = encoding)
cat(metadata, file = knit_input, append = TRUE)
}
)
Nun, meine Datei junk.r
wie folgt:
plot(mtcars$mpg, mtcars$hp)
und jetzt render("junk.r")
gibt mir ...
Jetzt können Sie options
verwenden Sie Ihre eigenen Einträge für Titel, Autor und/oder Datum zu verwenden, oder es blan verlassen k. Natürlich wäre es einfacher, die .r-Datei zu bearbeiten oder eine .Rmd-Datei zu erstellen, aber Sie haben diese ausgeschlossen.
Vielen Dank, überraschte, dass sie diese in nicht erwähnen '? Render', und es ist nicht einmal in dem ** Siehe auch ** Abschnitt. – ggll
@ggll danke, wenn es funktioniert, können Sie bitte die Antwort ankreuzen? –
@ggll Der Punkt in meiner gelöschten Antwort war folgender: Dieser formatierte Stil ist nicht spezifisch für die Metadaten. Es funktioniert wie folgt: Jede Zeile nach einem '# 'wird in der' md'-Datei wörtlich wiedergegeben, ob es sich um Metadaten oder etwas anderes handelt. Deshalb wollte ich dich zu "? Knitr :: spin" führen, um mehr über diesen formatierten Stil zu erfahren. –