从卸载的R包中使用S3方法

时间:2018-10-28 10:04:19

标签: r lubridate

让我们看一下lubridate软件包中类型months的方法numeric的示例。 加载程序包时,一切都会按预期进行:

library(lubridate)
#> 
#> Attaching package: 'lubridate'
#> The following object is masked from 'package:base':
#> 
#>     date
months(3)
#> [1] "3m 0d 0H 0M 0S"

reprex package(v0.2.1)于2018-10-28创建

但是,当未加载包时,我无法访问该方法。

lubridate::months(3)
#> Error: 'months' is not an exported object from 'namespace:lubridate'

reprex package(v0.2.1)于2018-10-28创建

我不想用:::来调用该函数,因为这是不好的做法。假设我不想加载程序包,该怎么办?

2 个答案:

答案 0 :(得分:1)

这就是它的工作方式,但是您可以将:::隐藏在函数定义中,以便您的主要代码可以仅使用months

months.numeric <- lubridate:::months.numeric

months(3)
## [1] "3m 0d 0H 0M 0S"

答案 1 :(得分:0)

G. Grothendieck's answer的替代方法是使用getFromNamespace()

months.numeric <- getFromNamespace("months.numeric", "lubridate")
months(3)
# [1] "3m 0d 0H 0M 0S"