Использование метода S3 из выгруженного пакета R - PullRequest
0 голосов
/ 28 октября 2018

Давайте рассмотрим пример метода months для типа numeric из пакета lubridate.При загрузке пакета все работает как положено:

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

Создано в 2018-10-28 пакетом Представить (v0.2.1)

Однако я не могу получить доступ к методу, когда пакет не загружен.

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

Создано в 2018-10-28 пакетом Представить (v0.2.1)

Я не хочу звонитьфункция с :::, так как это плохая практика.Если я не хочу загружать пакет, что я могу сделать?

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Альтернатива G.Гротендик ответит : getFromNamespace():

months.numeric <- getFromNamespace("months.numeric", "lubridate")
months(3)
# [1] "3m 0d 0H 0M 0S"
0 голосов
/ 28 октября 2018

Так оно и работает, но вы можете скрыть ::: в определении функции, чтобы ваш основной код мог просто использовать months.

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

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