2017-03-14 57 views
2

我有一個package,它爲對象提供了一個as.FlexTable方法,從ReporteRs包中擴展了S3通用方法。所以,我的空間文件,通過roxygen產生的,具有線路:從可選包中擴展S3通用

importFrom(ReporteRs,as.FlexTable) 
... 
S3method(as.FlexTable,huxtable) 
... 
export(as.FlexTable) 

我不太想把記者在進口方面:在描述文件,因爲它涉及到Java的一個大的外部依賴。但是,當我把它寫入建議:, R CMD check給我錯誤,如「不需要名稱空間依賴項」。

是否有無論如何我可以擴展通用沒有硬依賴?

+1

你可能會在R-devel的列表更快速的響應:https://stat.ethz.ch/mailman/ listinfo/r-devel – bdemarest

回答

5

導入是一個硬依賴項。 有些人不會正式導入,而是使用<pkgNamespace>::<obj> 替代,將其代碼的條件化爲 這個名稱空間的可用性。 我不建議這樣做,特別是不要爲 擴展一個通用的。

我建議你用ReporteRs維護者談:

  1. 你可以使用一個共同的(尚未將創建)非常小包裝說flexS3generics 提供S3泛型(如果S4 ..)你想同時使用 ,然後你和她/他從這個迷你包導入。 你會是這個包的作者。

  2. 如果你的包是非常小(在其足跡,含 依賴)不是「記者」,她/他可能同意進口 S3從你的包,而不是周圍的其他方法通用。

兩者都是乾淨的解決方案,併發布到CRAN, 「1)」是比較容易的時候都需要一些時間協調:一旦flexS3generics被釋放到 CRAN,變化(都)你的包(S)到 importFrom(flexS3generics, as.FlexTable)但這些變化和CRAN 提交然後是彼此獨立的。

((口味:我強烈傾向於as.flexTable(小寫字母 「F」)))

+1

它沒有得到比這更權威的...... –

+0

我可能應該知道,但誰是馬丁Maechler? (NB馬丁:我寧願'as_flextable',但那不是我的電話,包裹已經存在了5年以上......) – dash2

+0

@ dash2 https://www.r-project.org/contributors html的 –