Il codice sorgente R di pnorm
è:
function (q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
.Call(C_pnorm, q, mean, sd, lower.tail, log.p)
Quindi, tecnicamente parlando, digitando "pnorm" fa vi mostrano il codice sorgente. Tuttavia, più efficacemente: le viscere di pnorm
sono codificate in C, quindi il consiglio nella domanda precedente view source code in R è solo marginalmente utile (la maggior parte si concentra su funzioni nascoste in spazi dei nomi ecc.).
Uwe Ligges article in R news (pagina 43) è un buon riferimento generale. Da quel documento:
Se si guarda a codice sorgente R, a volte chiamate ad una delle seguenti funzioni presentarsi: .C(), .Call(), .Fortran(), .External(), o .Internal() e .Primitive(). Queste funzioni chiamano i punti di ingresso nel codice compilato come oggetti condivisi, librerie statiche o librerie di collegamento dinamico. Pertanto, è necessario esaminare le origini del codice compilato, se la completa comprensione del codice è richiesta . ... Il primo passo è cercare il punto di ingresso nel file '$ R HOME/src/main/names.c', se la funzione R chiamante è .Primitive() o .Internal() . Questo viene fatto nel seguente esempio per il codice che implementa la funzione R semplice ' sum().
(Il corsivo è perché la funzione precisa hai chiesto (sum
) è coperto in articolo di Ligges.)
A seconda di quanto seriamente si vuole scavare nel codice, può valere la pena scaricare e decomprimere il codice sorgente come suggerisce Ligges (ad esempio, è possibile utilizzare gli strumenti da riga di comando come grep
per cercare attraverso il codice sorgente). Per ulteriori ispezioni casuali, è possibile visualizzare le fonti online tramite R Subversion server o Winston Chang's github mirror (i collegamenti qui sono specificatamente a src/nmath/pnorm.c
). (Indovinare il posto giusto per cercare, src/nmath/pnorm.c
, richiede una certa familiarità con la struttura del codice sorgente R.)
mean
e sum
sono entrambi implementati in summary.c.
si trova in una categoria diversa da 'pnorm'. Prova "mean.default" per il codice R e https://github.com/wch/r-source/blob/trunk/src/main/summary.c per il codice C. E leggi l'articolo di Uwe Ligges linkato sopra! –