在包中引用DBI函数 - 要使用哪些?

时间:2017-07-04 12:12:14

标签: r r-package r-dbi

使用DBI扩展(例如RJDBC,RSQLite)开发软件包时,我应该参考哪个软件包?

connect_my_db <- function() DBI::dbConnect(RSQLite::SQLite(), "my_db.sqlite")

connect_my_db <- function() RSQLite::dbConnect(RSQLite::SQLite(), "my_db.sqlite")

第一种方法强迫我在Imports中使用DBI,所以我更喜欢第二种方法。但另一方面,我应该调用虚函数,让R决定调用什么。

2 个答案:

答案 0 :(得分:1)

从最终用户的角度来看,无关紧要:RSQLite依赖于DBI,因此您的软件包无论如何都需要安装RSQLite和DBI。从风格的角度来看,我更喜欢第一种方法,因为否则你会猜测R的方法调度机制。

答案 1 :(得分:1)

DBI规范确实要求所有后端重新导出所有DBI方法,因此两种符号(RSQLite::dbConnect()DBI::dbConnect())在所有实际用途中都是相同的:

identical(DBI::dbConnect, RSQLite::dbConnect)
#> [1] TRUE

DBI::表示您表示您正在使用DBI函数,但如果您的程序包仅使用RSQLite,从代码样式的角度来看,使用该前缀似乎很好。