Механизм пространства имен R позволяет использовать функции export
, которые затем видны пользователю. Кроме того, он позволяет выполнять функции import
из других пакетов. В то время как преимущество экспорта очевидно, у меня больше проблем, понимающих преимущества импорта.
Одно из преимуществ, по-видимому, заключается в том, что можно использовать функции из других пакетов без привязки пакета и тем самым экономить память. Это показано в разделе 1.6.4 в руководстве по написанию R-расширений.
Однако в функции импорта должны быть другие преимущества. Особенно, раздел 1.6.6 (относится к классам S4) показывает namespace
пакета stats4:
export(mle)
importFrom("graphics", plot)
importFrom("stats", optim, qchisq)
## For these, we define methods or (AIC, BIC, nobs) an implicit generic:
importFrom("stats", AIC, BIC, coef, confint, logLik, nobs, profile,
update, vcov)
exportClasses(mle, profile.mle, summary.mle)
## All methods for imported generics:
exportMethods(coef, confint, logLik, plot, profile, summary, show, update, vcov)
## implicit generics which do not have any methods here
export(AIC, BIC, nobs)
Здесь есть импортированные функции, которые не являются ни классами S4, ни генериками (где было бы целесообразно использовать импорт также, как описано в примере в в этом разделе), но функции, такие как plot
из пакета graphics
, которые автоматически загружаются при запуске R.
Поэтому мой вопрос: в чем преимущество импорта таких функций, как plot
, optim
или qchisq
?