簡體   English   中英

將 Rcpp 文件添加到現有的 r 包中?

[英]add and Rcpp file to an existing r Package?

我已經制作了一個簡單的 R 包(純 R)來解決蠻力問題,然后我嘗試通過編寫 Rcpp 腳本來加快代碼速度。 我編寫了一個腳本來將運行時間與“bench”庫進行比較。 現在,我如何將此腳本添加到我的包中? 我試着添加

#'@importFrom Rcpp cppFunction 

在我的 R 腳本之上並在 scr 文件夾中插入 Rcpp 文件但沒有用。 有沒有辦法將它添加到我的 r 包中而無需從頭開始創建包? 對不起,如果已經有人問過了,但我對這一切都很陌生,完全迷失了。

這種轉換實際上(仍然)非常困難(從需要多個文件的意義上說)。 很容易忽略細節。 讓我帶你了解原因。

讓我們假設您使用 R 包package.skeleton()啟動了一個工作包。 這是最簡單和最普遍的情況。 該包將工作(但有警告,請參閱我的pkgKitten包中的包裝而不是清理,以及 CRAN 上的十幾個其他包幫助功能和包)。 特別要注意的是,我沒有提到roxygen2 ,這在這一點上只是一個額外的復雜問題,所以讓我們只關注.Rd文件。

您現在可以將最簡單的包與由Rcpp構建並為Rcpp構建的包進行Rcpp ,即使用Rcpp.package.skeleton() 至少會看到這些差異

  • DESCRIPTIONLinkingTo:Imports
  • NAMESPACE用於importFrom以及useDynLib
  • 一個新的src目錄和對src/Makevars的可能需要

所有這些都使(基本上)通過Rcpp.package.skeleton()啟動一個新包變得更容易,並將您現有的包代碼復制到該包中。 我們根本沒有轉換助手。 我仍然會時不時地進行您嘗試的“手動轉換”,即使我需要嘗試一兩次,而且我已經多次看到所有錯誤消息......

因此,即使您不想“復制所有內容”,我認為最簡單的方法是

  • 使用和不使用Rcpp創建兩個
  • 做一個遞歸diff
  • 確保差異適用於您的原始包裝。

PS 並且請記住,當您使用roxygen2並在src/目錄中有文檔時,請始終先運行Rcpp::compileAttributes()然后再運行roxygen2::roxygenize() RStudio 和其他助手會為您完成此操作,但仍然很容易忘記...

暫無
暫無

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

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