簡體   English   中英

如何在二進制 R 包中包含 HTML 小插圖

[英]How to include an HTML vignette in a binary R package

我為內部目的編寫了一個 R 包,還添加了一些小插曲。 當我使用devtools::install(build_vignettes = TRUE) ,所有小插圖都正確安裝在我的機器上。 但是為了將包分發給大學,我想生成一個 Windows 二進制文件。

但是當我從 RStudio Build 窗格使用Build binary package時,從生成的二進制文件安裝包時不會顯示小插圖。 我想我可以在構建二進制包之前將小插圖從doc移動到inst/doc ,但這需要在小插圖更改時手動完成。

R CMD INSTALL --help我無法確定是否有包括構建小插圖的選項。

有沒有比手動將文件從doc復制到inst/doc更好的選擇?

我已經嘗試過devtools::build_vignettes() 這是控制台中的輸出:

> devtools::build_vignettes()
Building archivR vignettes
Moving vig1.html, vig2.html, vig1.R, vig2.R to doc/
Copying vig1.Rmd, vig2.Rmd to doc/
Building vignette index

它說文件被復制到doc/ 它們不會出現在inst/doc

如果你使用

devtools::build()
devtools::build("../package_name.tar.gz", binary=TRUE)

然后小插曲將首先構建到 tar.gz 文件中,然后再構建到二進制文件中。

無需移動任何文件

我也一直在為同樣的問題而苦苦掙扎。

  • 以前, devtools::build_vignettes()將結果放在inst/doc (例如,按照此處最后一個要點中的建議)。
  • 從 2.0.0 版(2018 年 10 月發布)開始, devtools::build_vignettes()現在將結果放在doc (具體更改似乎在此處)。 與此提交相關的問題中給出了此更改的原因。

我找不到僅使用devtools完成先前工作流程的方法,因此我使用了以下代碼。 它將覆蓋已經在inst/docinst/Meta任何文件。

build_vignettes_to_inst <- function() {
  devtools::build_vignettes() # Builds vignettes to 'doc' and 'Meta'. Updates '.gitignore'.
  unlink(c("inst/doc", "inst/Meta"), recursive = TRUE) # Remove the directories if they exist
  dir.create("inst/doc"); dir.create("inst/Meta") # Create empty directories
  has_worked <- c( # Copy files to 'inst' subfolders
    file.copy(list.files("doc", full.names = TRUE), to = "inst/doc") 
    , file.copy(list.files("Meta", full.names = TRUE), to = "inst/Meta")
  )
  unlink(c("doc", "Meta"), recursive = TRUE) # Optional: Remove unwanted directories
  return(all(has_worked)) # Returns TRUE if everything worked OK
}

build_vignettes_to_inst() # Call the function

您現在可以使用binary = TRUE調用devtools::build() ,它將包含構建的(即 HTML)小插曲。

僅供參考:

最可靠的方法是構建一個源包(.tar.gz 文件),然后使用命令工具而不是 RStudio 來構建二進制文件。 如果您位於可以找到源包的目錄中,則可以在命令行中使用以下命令(前提是 R 在您的 PATH 中):

R CMD INSTALL --build pkgname_x.y.z.tar.gz

pkgname_x.yztar.gz是包含源包的 tar 文件的名稱。

請注意,如果您希望正確添加小插圖,您應該首先創建源包並從源包構建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM