Механизм пространства имен 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
?