簡體   English   中英

使用 R6 類創建並記錄一個包

[英]create and document a package with R6 classes

由於 RStudio、devtools 和 roxygen2,我目前正在使用 R6 類創建我的第一個 R 包 (:D)。 當我的包只包含函數時,我可以毫無問題地構建和加載它。 但是當我想記錄 R6 類時(在這個包https://cran.r-project.org/web/packages/data.tree/data.tree.pdf 中使用字段和方法,如“節點”),RStudio 不不想構建包。 我試圖在論壇上找到竅門,但是關於這個問題的信息非常稀少

我的程序:

  1. 打開Rstudio,新建一個項目,我選擇“R包”
  2. 我填寫包的名稱,並選擇我的包將基於的源文件(一個函數和 3 個類)。

-> 在這一點上,過程是好的,因為我用“man”獲得了正確的結構,描述了我的不同類,“R”用這些類的不同腳本。

但是當我嘗試構建並重新加載包(已預先加載 R6 包)時,出現錯誤:

==> R CMD INSTALL --no-multiarch --with-keep.source esa

* installing to library ‘/home/cha/R/x86_64-pc-linux-gnu-library/3.0’
* installing *source* package ‘esa’ ...
** R
** preparing package for lazy loading
Error in eval(expr, envir, enclos) :
  impossible de trouver la fonction "R6Class" (translation: impossible to find the function "R6Class")
Error : unable to load R code in package ‘esa’
ERROR: lazy loading failed for package ‘esa’
* removing ‘/home/cha/R/x86_64-pc-linux-gnu-library/3.0/esa’
* restoring previous ‘/home/cha/R/x86_64-pc-linux-gnu-library/3.0/esa’  

Exited with status 1. 

我不明白如何解決這個錯誤,因為 Rstudio 是對的:R6Class 不是函數!

我的問題:

我的程序正確嗎? 我該如何解決這個錯誤?

我需要知道 Rstudio 是否能夠在 R 包構建中考慮 R6 類? 如果沒有,我可以手動完成,但我只需要知道為了停止使用 RStudio 浪費我的時間:)

預先感謝您的幫助 !!

非常感謝麥克弗利克!!

我剛剛從 R6Class 包的開發人員那里收到了一個答復。 他們告訴我,我只需要添加一行

importFrom(R6, R6Class)

在 NAMESPACE 文件中。 它工作正常! (我永遠不會單獨找到它:S)

此外,要添加一些項目,例如繼承、字段和方法,他們建議以具有預期結構的包中的 .Rd 為例。

最后他們推薦了一本書http://r-pkgs.had.co.nz/ ,我想我會讀的!!

再次感謝大家

也許您應該在您使用 R6 類的 .R 文件中包含以下內容,並讓“devtools”負責創建 NAMESPACE 文件

#' @importFrom R6 R6Class   

> devtools::check() # Will create the NAMESPACE file for you

暫無
暫無

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

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