검색 경로의 이름 충돌로 인해 R에서 함수의 마스크를 해제하는 방법
-
15-09-2020 - |
문제
패키지를 로드했을 때 debug
스크립트를 디버깅하려면 zoo
문제가 발생했습니다.기능 index
~에서 zoo
가면을 쓴 debug
패키지.어떻게 마스크를 해제할 수 있나요? index
?일반적으로 이러한 이름 충돌 문제를 어떻게 처리합니까?우리는 그냥 사용하지 않습니다 debug
'동물원'이 포함된 패키지?
해결책
내보낸 기호는 항상 ::
운영자:
zoo::index
네임스페이스에 선언되지 않은 숨겨진 함수는 다음을 사용하여 계속 액세스할 수 있습니다. :::
(삼중 콜론) 예를 들면 다음과 같습니다.
zoo:::.onLoad
내보내지 않아도 볼 수 있습니다.
다른 팁
마스킹된 기능이 있는 패키지를 언로드한 다음 다시 로드할 수 있습니다.검색 경로에서 우선 순위를 다시 얻습니다.
unloadNamespace("zoo")
library("zoo")
나중에 다른 기능을 마스킹하는 것을 방지하면서 패키지를 로드하려면 검색 경로에서 임의의 큰 숫자를 사용하여 해당 위치를 지정할 수 있습니다.
library("debug", pos = .Machine$integer.max)
사용자에게만 마스킹되지만 Zoo에는 마스킹되지 않으므로 Zoo 함수가 인덱스를 사용하려고 하면 여전히 자체 인덱스를 먼저 찾습니다.
Zoo에는 time.zoo 메소드도 있으므로 z가 Zoo 객체인 경우 index(z) 대신 time(z)를 사용할 수 있습니다.
마지막으로 언제든지 Zoo::index를 참조하여 Zoo에서 해당 항목을 얻을 수 있는지 확인할 수 있습니다.
제휴하지 않습니다 StackOverflow