Mi piacerebbe capire la logica R utilizzata quando si passano gli argomenti alle funzioni, si creano copie di variabili, ecc. Rispetto all'utilizzo della memoria. Quando crea effettivamente una copia della variabile rispetto al solo passaggio di un riferimento a quella variabile? In particolare, le situazioni mi incuriosisce sono:R, copie profonde o superficiali, passaggio per riferimento
f <- function(x) {x+1}
a <- 1
f(a)
È a
essere passato alla lettera o è un riferimento ad un essere passato?
x <- 1
y <- x
Riferimento della copia? Quando non è questo il caso?
Se qualcuno potesse spiegarmelo, apprezzerei molto.
Si potrebbe trovare [questo] (http://cran.at.r-project.org/doc/manuals/R -lang.html # Valutazione) sezione della definizione del linguaggio R utile. – joran
Questo documento di Morandat e colleghi ha una discussione interessante e critica sulla valutazione lenta degli argomenti in R: http://www.cs.purdue.edu/homes/jv/pubs/ecoop12.pdf – jthetzel
Uso di 'tracemem' in un modo appropriato la R compilata può essere utile per l'esplorazione, così come '.Internal (inspect (x))' con una comprensione del campo 'NAM'ED; il mio mantra generale è 'copy-on-change' quindi ad esempio il tuo 'y <- x' non innesca una copia (ancora) perché non c'è stato alcun cambiamento nell'originale, la memoria puntata da' x' (e ' y') è 'NAMED' tale che la modifica di uno dei due attiverà una copia. –