Questo è pazzesco, e solo per curiosità intellettuale: Posso eseguire una funzione in R in modo tale che dopo il completamento della funzione posso ottenere tutte le variabili create quando la funzione viene eseguita? Quindi, la capacità di esaminare una funzione appena prima di tornare? Non intendo entrare nella funzione in modalità di debug.R - ottieni tutte le variabili create dalla funzione chiama
12
A
risposta
18
Non sono sicuro se questo è quello che vuoi, ma forse vicino. È possibile incorporare un'espressione arbitrale nelle funzioni esistenti trace
:
> trace(lm, exit = function().last_env <<- parent.frame())
Tracing function "lm" in package "stats"
[1] "lm"
> lm(y~x, data.frame(x=1:10, y=10:1))
Tracing lm(y ~ x, data.frame(x = 1:10, y = 10:1)) on exit
Call:
lm(formula = y ~ x, data = data.frame(x = 1:10, y = 10:1))
Coefficients:
(Intercept) x
11 -1
> ls(.last_env)
[1] "cl" "contrasts" "data" "formula" "m" "method" "mf" "model" "mt" "na.action" "offset"
[12] "qr" "ret.x" "ret.y" "singular.ok" "subset" "w" "weights" "x" "y" "z"
> get("cl", .last_env)
lm(formula = y ~ x, data = data.frame(x = 1:10, y = 10:1))
0
È questo il genere di cose che stai cercando?
> fjj <- function() { x <- 3; y <- 4; ls(environment())}
> fjj()
[1] "x" "y"
O forse si vuole una lista in cui si 'get' ogni componente.
1
Per ottenere tutte le variabili ed i loro valori come un elenco si potrebbe usare l'ultima riga della funzione in questo esempio:
myFunction=function(){
a="lolcat"
b=data.frame(firstCol=1:3,secondCol=letters[1:3])
d=list()
d[["someName"]]=10:13
sapply(ls(),function(x)get(x),simplify=F,USE.NAMES=T)
}
myResults=myFunction()
myResults
uscita:
$a
[1] "lolcat"
$b
firstCol secondCol
1 1 a
2 2 b
3 3 c
$d
$d$someName
[1] 10 11 12 13
Problemi correlati
- 1. Ottieni tutte le variabili Javascript?
- 2. Ottieni tutte le variabili inviate con POST?
- 3. Ottieni tutte le variabili definite tramite `attr_accessor` senza sovrascrivere` attr_accessor`
- 4. Rendere globali tutte le variabili
- 5. Chiama SQL dinamico dalla funzione
- 6. powershell - Rimuovi tutte le variabili
- 7. Stampa tutte le variabili sessione/post/ottieni in ASP.NET pagina
- 8. Ottieni tutte le variabili di istanza dichiarate nella classe
- 9. Ottenere tutte le righe create oggi
- 10. accesso tutte le variabili locali
- 11. Come selezionare tutte le variabili fattore in R
- 12. rimuovere tutte le variabili tranne le funzioni
- 13. Chiama la funzione dalla stringa all'interno dell'oggetto?
- 14. Ottieni l'istruzione CREATE T-SQL per le stored procedure SQLCLR
- 15. Come si elencano solo le variabili create dall'utente in PowerShell?
- 16. Chiama le funzioni R dalle query sqldf
- 17. Rasoio MVC3: chiama la funzione javascript dalla vista
- 18. exec non rileva le variabili dalla chiusura
- 19. Query per ottenere tutte le istruzioni CREATE delle tabelle MySql
- 20. Ottieni tutte le proprietà della finestra definite dall'utente?
- 21. R & Fortran chiama
- 22. Le variabili globali e locali in R
- 23. Diagramma di restituzione dalla funzione R
- 24. Ottieni l'elenco di tutte le app installate
- 25. Ottieni tutte le possibili valute disponibili
- 26. Ottieni tutte le permutazioni di una fetta
- 27. Ottieni tutte le righe da SQLite
- 28. NSLocale - ottieni tutte le lingue disponibili
- 29. Oracle: Ottieni tutte le righe tranne uno
- 30. Ottieni tutte le DLL per un processo
è 'ls()' al fine della funzione insufficiente? Vuoi dire che vuoi ottenere la lista delle variabili all'interno della funzione o al di fuori della funzione? – kohske
Non ho il sorgente per la funzione, quindi non posso inserire ls all'interno di esso. Immagina di voler eseguire questa operazione su una funzione in una delle librerie di base. – SFun28