.Call
은 다소 불충분하게 문서화 된 것처럼 보입니다..Call에 대한 PACKAGE 인수는 어떻게 작동합니까?
PACKAGE
:?.Call
는PACKAGE
인수에 대한 설명을 제공합니다 제공하는 경우,이 인수 (플러스 기존의 확장에 의해 주어진 DLL에 문자열.NAME
에 대한 검색을 제한 '하는 .so', '을 .DLL' , ...).이 인수는
...
다음에 나오며 그 이름을 축약 할 수 없습니다.이 인수를 사용하여 다른 패키지가 외부 기호를 무시할 수 없도록하고 검색 속도를 높일 수있는 패키지 안전성을 추가하기위한 것입니다 ('참고'참조).
그리고
노트에 이러한 기능 중 하나가PACKAGE
를 지정 (하나의 DLL로 검색을 제한하는) 또는 기본 심볼의 하나로서
.NAME
을 통과 할, 자주 사용할 경우
사물. 기호 검색은 특히 많은 네임 스페이스가로드 될 때 시간이 오래 걸릴 수 있습니다.
R에 링크 된 기호의 경우
PACKAGE = "base"
이 표시 될 수 있습니다. 코드에서 사용하지 마십시오. 이러한 기호는 API의 일부가 아니며 경고없이 변경 될 수 있습니다.
PACKAGE = ""
(이전에는 문서화되지 않았 음) : 이제 오류가 발생했습니다.
그러나 사용 예제가 없습니다.
PACKAGE
인수가 어떻게 작동하는지 불분명합니다. 예를 들어, this 질문에 대답에, 나는 다음은 일을해야 생각하지만 그렇지 않습니다 :
.Call(C_BinCount, x, breaks, TRUE, TRUE, PACKAGE = "graphics")
대신이 작동합니다
.Call(graphics:::C_BinCount, x, breaks, TRUE, TRUE)
이이 C_BinCount
는 안 export 때문에 단순히인가? 즉 내부 코드 hist.default
에 PACKAGE = "graphics"
이 추가 되었다면 이것이 가능했을까요?
이것은 간단하지만이 인수의 사용법을 찾는 것은 거의 없습니다. 내가 찾은 소스의 아무도 ... 실제로 감사하겠습니다 작업이의 예를 언급 (1, 2, 3, 4, 5)을 통과하는 것보다 더주지
(그냥 기존 패키지에있는 코드를 인용 될지라도) (자기 봉쇄 목적을 위해, 당신은 여기에 다른 질문에서 코드 붙여 넣기 복사 할 x
하고 breaks
하지 않는 경우) :
x = runif(100000000, 2.5, 2.6)
nB <- 99
delt <- 3/nB
fuzz <- 1e-7 * c(-delt, rep.int(delt, nB))
breaks <- seq(0, 3, by = delt) + fuzz
좋은 질문, 나는 단지 그것을 봤다, 아무도 경험이없는 경우를 대비해 몇 가지 힌트를 줄 수있는 것을 발견했다. http://www.biostat.jhsph.edu/~bcaffo/statcomp/files/dotCall.pdf – Learner
@ 실제로 학습자는 내 질문의 링크 3입니다. – MichaelChirico
[또한이 참고서] (https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Registering-native-routines)를 참조하십시오. –