의 R 소스 코드 pnorm
는 다음과 같습니다.
function (q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
.Call(C_pnorm, q, mean, sd, lower.tail, log.p)
따라서 기술적으로 말하면 "pnorm"을 입력 하면 소스 코드 가 표시됩니다. 그러나 더 유용하게도 :의 내장은 pnorm
C로 코딩되었으므로 R 의 이전 질문 보기 소스 코드 의 조언은 주변 적으로 만 유용합니다 (대부분은 네임 스페이스 등에 숨겨진 함수에 집중합니다).
R 뉴스 (p. 43)에있는 Uwe Ligges의 기사 는 좋은 일반 참고 자료입니다. 해당 문서에서 :
R 소스 코드를 볼 때 .C (), .Call (), .Fortran (), .External () 또는 .Internal () 및 .Primitive () 함수 중 하나에 대한 호출이 표시되는 경우가 있습니다. 이러한 함수는 공유 객체, 정적 라이브러리 또는 동적 링크 라이브러리와 같은 컴파일 된 코드에서 진입 점을 호출합니다. 따라서 코드에 대한 완전한 이해가 필요한 경우 컴파일 된 코드의 소스를 살펴볼 필요가 있습니다. ... 첫 번째 단계는 호출하는 R 함수가 .Primitive () 또는 .Internal () 인 경우 '$ R HOME / src / main / names.c'파일에서 진입 점을 찾는 것입니다. 이것은 '단순'R 함수 sum ()을 구현하는 코드에 대한 다음 예제에서 수행됩니다.
(당신이 질문 한 정확한 기능 ( sum
)은 Ligges의 기사에서 다루기 때문에 강조가 추가되었습니다 .)
코드를 얼마나 심각하게 파헤 치고 싶은지에 따라 Ligges가 제안한대로 소스 코드를 다운로드하고 압축을 풀 가치가있을 수 있습니다 (예를 들어, grep
소스 코드 검색 과 같은 명령 줄 도구를 사용할 수 있음 ). 좀 더 간단한 검사를 위해 R Subversion 서버 또는 Winston Chang의 github 미러 를 통해 온라인으로 소스를 볼 수 있습니다 (여기에있는 링크는 특히 src/nmath/pnorm.c
). (보기에 적합한 위치를 추측하려면 src/nmath/pnorm.c
R 소스 코드의 구조에 어느 정도 익숙해야합니다.)
mean
그리고 sum
둘 다 summary.c 에서 구현됩니다 .
pnorm
.mean.default
R 코드를 시도 하고 C 코드를 위해 github.com/wch/r-source/blob/trunk/src/main/summary.c 를 시도하십시오 . 그리고 위에 링크 된 Uwe Ligges의 기사를 읽어보세요!