Mi piacerebbe sapere come optim(..., hessian=TRUE)
calcola un assia, quindi ho dato un'occhiata alla definizione della funzione. Vicino alla sua estremità, include questa chiamata a .External2()
:Come individuare il codice chiamato da .External2()?
if (hessian)
res$hessian <- .External2(C_optimhess, res$par, fn1,
gr1, con)
Sembra che ci sia una chiamata a una funzione C esterna chiamata C_optimhess
, così ho grep
'd la directory sorgente R per C_optimhess
, ma si avvicinò a mani vuote. Ci sono solo due occorrenze di quella stringa nella base di codice di R, una in optim
e una in optimHess
. Entrambe le funzioni sono definite in $R_SOURCE_DIR/src/library/stats/R/optim.R
e tale file non include ulteriori suggerimenti/commenti/riferimenti.
optim
Il codice di riferimento del file di guida dell'aiuto su cui sono basati diversi metodi di ottimizzazione della funzione, ma che non sembra (indicare) l'origine di C_optimhess
.
In un caso come questo, dove dovrei cercare di trovare il codice C chiamato da .External2
?
Grande, grazie! (Una riga o due su questo potrebbe essere una bella aggiunta alla sezione "Funzioni che chiamano codice compilato" di [la tua risposta sempre più completa a questa domanda] (http://stackoverflow.com/questions/19226816/how-can-i -view-the-source-code-for-a-function/19226817 # 19226817).) –
@ JoshO'Brien: fatto; ed è finalmente wiki della comunità, come avrebbe dovuto essere sin dall'inizio (ma non mi è stato permesso di contrassegnarlo come CW). –