當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


R reprex reprex_render 在新的 R 會話中渲染文檔

這是 rmarkdown::render() 的包裝,強製執行 "reprex" 心態。這是所發生情況的簡化版本:

callr::r(
  function(input) {
    rmarkdown::render(input, envir = globalenv(), encoding = "UTF-8")
  },
  args = list(input = input),
  spinner = is_interactive(),
  stdout = std_file, stderr = std_file
)

需要注意的主要特點

  • rmarkdown::render() 使用 callr::r() 在新的 R 會話中執行。目標是消除對象、附加包和會話狀態的其他方麵從當前會話泄漏到渲染會話中。此外,係統和 user-level .Rprofile 也會被忽略。

  • 代碼在這個新 R 會話的 globalenv() 中進行評估,這意味著方法分派按照大多數人期望的方式工作。

  • 輸入文件假定為 UTF-8,這是 v1.24 起的 knit 要求。

  • 如果 YAML frontmatter 包含 std_err_out: TRUE ,則渲染 R 會話的標準輸出和錯誤將在 std_file 中捕獲,然後注入到渲染結果中。

reprex_render() 設計用於使用 reprex_document() 輸出格式,通常通過調用 reprex()reprex_render() 可以與其他 R Markdown 輸出格式一起使用,但它不是 well-tested。

用法

reprex_render(input, html_preview = NULL, encoding = "UTF-8")

參數

input

要渲染的輸入文件。這可以是 .R 腳本或 .Rmd R Markdown 文檔。

html_preview

邏輯性強。是否在查看器(RStudio 或瀏覽器)中顯示渲染輸出。在非交互式會話中始終FALSE。閱讀有關 opt() 的更多信息。

encoding

輸入文件的編碼。請注意,唯一可接受的值是 "UTF-8",從 v1.24 開始,knitr 要求使用該值。這純粹是為了技術方便而作為參數公開,與 RStudio IDE 中的 "Knit" 按鈕相關。

傳遞rmarkdown::render()的輸出,即輸出文件的路徑。

例子

if (FALSE) {
reprex_render("input.Rmd")
}
源代碼:R/reprex_render.R

相關用法


注:本文由純淨天空篩選整理自Jennifer Bryan等大神的英文原創作品 Render a document in a new R session。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。