R의 네임 스페이스 메커니즘을 사용하면 사용자가 볼 수있는 기능을 export
개까지 허용합니다. 또한 다른 패키지의 기능을 import
까지 허용합니다. 수출 이익은 명백하지만 수입의 혜택을 이해하는 데는 더 많은 어려움이 있습니다.R의 네임 스페이스에서 가져 오기의 이점은 무엇입니까?
하나의 이점은 패키지를 부착하지 않고 다른 패키지의 기능을 사용하여 메모리를 절약 할 수 있다는 것입니다. 이는 섹션 1.6.4 in the writing R extensions manual에 예시되어 있습니다.
그러나 가져 오기 기능의 다른 이점이 있어야합니다.
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)
여기
(that section의 예제에 설명 된대로 그것뿐만 아니라 가져 오기를 사용하는 것이 나을)도 S4 클래스도 제네릭이 수입 된 기능이 있습니다 : 특히, section 1.6.6 (that deals with S4 classes)는 stats4 패키지의 namespace
을 보여줍니다 R이 시작될 때 자동으로로드되는 graphics
패키지의 plot
과 같은 기능을 수행합니다.
따라서 내 질문은 plot
, optim
또는 qchisq
과 같은 함수 가져 오기의 이점은 무엇입니까?
즉, 그러한 함수를 임포트하는 것은 일반적인 것을 홍보하려는 경우에만 의미가 있습니까? (검색 경로에 'plot'이라는 다른 함수가 없다고 가정하고 싶다면 – Henrik
패키지가 사용하는 base가 아닌 다른 패키지에서 항상 함수를 임포트하는 것이 좋습니다. 일부 제 3의 패키지는'plot = function (...) '함수를 정의합니다. "당신의 코드가 깨지는 것을 이야기하는 좋은 이야기가 있습니다.사용자는 검색 경로를 제어 할 수 없습니다. –
그러나 나는 항상'::'연산자를 사용하여 함수를 호출하는 경우 (예 :'plot()'대신 항상'graphics :: plot()') 패키지가 이미 연결되어있는 경우에도 가져 오기의 이점이 있습니까? – Henrik