Исходный код 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 news (стр. 43) является хорошей общей ссылкой. Из этого документа:
При просмотре исходного кода R иногда появляются вызовы одной из следующих функций: .C (), .Call (), .Fortran (), .External () или .Internal () и .Primitive (). Эти функции вызывают точки входа в скомпилированном коде, таком как общие объекты, статические библиотеки или библиотеки динамической компоновки. Поэтому необходимо заглянуть в источники скомпилированного кода, если требуется полное понимание кода. ... Первый шаг - найти точку входа в файле '$ R HOME / src / main / names.c', если вызывающая функция R либо .Primitive (), либо .Internal (). Это делается в следующем примере кода, реализующего «простую» функцию R sum ().
(Акцент добавлен, потому что точная функция, о которой вы спрашивали ( sum
), описана в статье Лиггеса.)
В зависимости от того, насколько серьезно вы хотите вникнуть в код, возможно, стоит загрузить и распаковать исходный код, как предлагает Ligges (например, тогда вы можете использовать инструменты командной строки, такие как grep
поиск в исходном коде). Для более случайной проверки вы можете просмотреть источники в Интернете через сервер R Subversion или зеркало Github Винстона Чанга (ссылки здесь специально на src/nmath/pnorm.c
). (Чтобы угадать правильное место для поиска, src/nmath/pnorm.c
требуется некоторое знакомство со структурой исходного кода R.)
mean
и sum
оба реализованы в summary.c .
pnorm
. Попробуйтеmean.default
использовать код R и github.com/wch/r-source/blob/trunk/src/main/summary.c для кода C. И обязательно прочтите статью Уве Лиггеса по ссылке выше!