2010-10-19 17 views
35

domande simili hanno sollevato per altre lingue: C, sql, java, ecc, ma sto cercando di farlo in R.Accesso valore della variabile in cui il nome della variabile viene memorizzato in una stringa in R

I hanno

ret_series <- c(1, 2, 3); 
x <- "ret_series"; 

Come faccio ad avere (1, 2, 3) chiamando una funzione/manipolazione da x, senza menzionare direttamente di ret_series?

+0

Vedere anche: http://stackoverflow.com/questions/2948367/pass-variable-name-to-a-function-in-r –

+0

FWIW, il punto e virgola alla fine di ogni istruzione non è necessario. –

risposta

49

Hai fornito la risposta nella tua domanda. Prova get.

13

Per un utilizzo singolo, la funzione get funziona (come è stato menzionato), ma non è adatta ai progetti più grandi. è meglio per memorizzare i tuoi dati in elenchi o ambienti, quindi usare [[per accedere ai singoli elementi:

mydata <- list(ret_series=c(1,2,3)) 
x <- 'ret_series' 

mydata[[x]] 
3

Cosa c'è di sbagliato con uno dei seguenti?

eval(as.name(x)) 

eval(as.symbol(x)) 
+0

Fare attenzione quando si incolla il codice dalla console. StackOverflow interpreta ">" come citato. Utilizzare il simbolo 0101010 per formattare il codice. E benvenuto su SO;) – Marek

1

Si noti che alcuni degli esempi di cui sopra non funzionerebbero per un data.frame.

Per esempio, dato

x <- data.frame(a=seq(1,5))

get("x$a") non darebbe x$a.

+2

'get (" x ") $ a' funzionerebbe. –

Problemi correlati