簡體   English   中英

如何使另一個包中的S4類對我的包可用?

[英]How to make S4 class from another package available to my package?

我正在遵循Hadley的指南來實現DBI后端 ,該指南指示我構建從DBI類繼承的S4類。

根據說明,要使DBI類可用,似乎我只需要將DBI列為導入文件中的DESCRIPTION文件。

但是,即使這樣做,我仍然會收到錯誤消息

 Error in reconcilePropertiesAndPrototype(name, slots, prototype, superClasses,  : 
  no definition was found for superclass “DBIDriver” in the specification of class “KazamDriver” 

如果我顯式地將DBI附加到library那么這個問題就消失了,但是當然不應該在軟件包代碼中使用library

我的代碼:

# DBI-backend.R 
setClass("KazamDriver", contains = "DBIDriver")

# DESCRIPTION
Imports:
  DBI (>= 0.3.0),
  methods

DESCRIPTION文件中的“導入”字段實際上不導入任何內容。 它僅確保在用戶安裝軟件包時安裝了列出的軟件包。

而是使用NAMESPACE使其他程序包或功能可用於您的程序包。 另外,請勿手動編輯NAMESPACE,而應使用Roxygen2( 在此處查看詳細信息)。

對於這種特殊情況,這意味着

#' @import DBI
setClass("KazamDriver", contains = "DBIDriver")

暫無
暫無

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

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