Tôi không biết nếu điều này là một giải pháp đặc biệt là tuyệt vời, nhưng nó quá dài cho một chú thích, vì vậy ở đây đi. Tôi đã xem số rmarkdown::render
và tôi không nghĩ điều bạn muốn là có thể trừ khi bạn tự xác định lại số render
. Nhìn vào dòng 85 và trở đi:
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)
Điều này không được kiểm soát bởi bất kỳ điều kiện nào. Vì vậy, một cách lộn xộn là xác định lại render
và thay thế một trong các dòng của nó. Tôi mượn một câu trả lời hữu ích cho câu hỏi này: 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)
}
)
Bây giờ, tập tin của tôi junk.r
là như sau:
plot(mtcars$mpg, mtcars$hp)
và bây giờ render("junk.r")
mang lại cho tôi ...
Bây giờ bạn có thể sử dụng options
để sử dụng các mục nhập của riêng bạn cho tiêu đề, tác giả và/hoặc ngày hoặc để lại nó k. Tất nhiên, sẽ dễ dàng hơn khi chỉnh sửa tệp .r hoặc tạo tệp .Rmd nhưng bạn đã loại trừ chúng ra.
Cảm ơn rất nhiều, ngạc nhiên khi họ không đề cập đến điều này trong '? Render', và nó thậm chí không nằm trong phần ** Xem thêm **. – ggll
@ggll cảm ơn nếu nó hoạt động có thể vui lòng đánh dấu vào câu trả lời? –
@ggll Điểm trong câu trả lời đã xóa của tôi là câu hỏi sau: kiểu được định dạng này không dành riêng cho siêu dữ liệu. Nó hoạt động như sau: mỗi dòng sau khi một '# '' được trả về nguyên văn trong tệp 'md', cho dù đó là siêu dữ liệu hay cái gì khác. Đó là lý do tại sao tôi muốn hướng bạn đến '? Knitr :: spin' để biết thêm thông tin về kiểu được định dạng này. –