簡體   English   中英

我是否必須導出通過::在R中有條件導入的函數?

[英]Do I have to export functions conditionally imported via :: in R?

我正在從在各種R包中定義了類的對象中提取信息。 例如,我從各種統計模型(不總是采用coef方法)中提取系數。 我通常不必導入那些軟件包,因為我定義了一個通用函數,用戶可以為其添加方法。 每種統計模型都有一種方法,如果用戶僅對一種特定的模型類型感興趣,那么導入所有這些模型定義將是愚蠢的。

但是,在某些情況下,我需要使用在包中定義的函數。 例如,lme4包中的confint.merMod方法。 到目前為止,我使用package::function來調用這些函數,並將此命令包裝在一個exists(function) if-condition中,以確保該軟件包確實提供了此功能(因為該功能可能僅在某些版本的包)。

但是,我只是在http://developer.r-project.org/blosxom.cgi/R-devel/NEWS (請參閱2013年9月5日)上發現,在R版本3.0.2中,“'R CMD check'可以完成更多工作徹底檢查已聲明的包和名稱空間。它報告由“ ::”導入的對象,這些對象不會導出。

這是否意味着我真的必須將export("function")到NAMESPACE文件中? CMD不會因為功能只是有條件地導入而抱怨嗎?

為了澄清/總結未來的訪客...

問題中引用的R-devel新聞與現在的3-0分支NEWS文件有關,其中的特定條目列出了R CMD check將生成報告的特定情況,這些報告涉及導入,使用和聲明包和函數的問題。

如果您對特定警告有疑問,則值得一看。

有關更多(更深入)的信息,請參見 Wiki頁面 ,該頁面提供指向Writing R Extensions R開發指南和其他有用信息的鏈接。

暫無
暫無

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

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