2014-05-18 13 views
5

Dalla lettura che ho fatto con R, posso selezionare una colonna in un frame di dati con uno di questi due metodi: frame [, colonna] o telaio $ colonna. Tuttavia, quando ho una stringa come variabile, funziona solo nella prima. In altre parole, considerare quanto segue:

Ho un frame di dati, tmp, un sottoinsieme di un frame di dati più grande di risposte alle domande. V1 è l'ID del risponditore, Q5.3 è la risposta, un 1 o 0:

  V1 Q5.3 
2 R_bdyKkzWcvBxDFTT 1 
3 R_41wnKUQcM8mUW2x 0 
4 R_2ogeykkgbH2e4RL 1 
5 R_8D4jzMBfYO0M0ux 1 
6 R_3KPgP2pxWROnip7 1 

str(tmp) 

'data.frame': 5 obs. of 2 variables: 
    $ V1 : Factor w/ 364 levels "R_0039orNoOoWaDQx",..: 256 116 70 201 95 
    $ Q5.3: num 1 0 1 1 1 

Ora, io definisco una variabile X, che contiene la stringa del nome di una delle colonne.

x<-"Q5.3" 

tmp [, x] restituisce quello che penso dovrebbe restituire:

tmp[,x] 

[1] 1 0 1 1 1 

tmp $ "Q5.3" restituisce quello che penso dovrebbe restituire:

tmp$"Q5.3" 

[1] 1 0 1 1 1 

tmp $ x tuttavia restituisce

tmp$x 

NULL 

Come posso dire a R di interpretare tmp $ x come tmp $ "Q5.3".

risposta

14

Se si dispone di una variabile x con un nome di colonna in tmp, tmp[,x] o tmp[[x]] sono il modo corretto per estrarlo. Non è possibile ottenere R per utilizzare trattare tmp$x come tmp$"Q5.3". tmp$x farà sempre riferimento all'elemento denominato "x" in "tmp".

+0

Bummer. Grazie. Smetterò di provarci, allora. :-) –

+0

questo deve essere un dupe ... –

+0

@BenBolker Non riesco mai a trovare un buon dup per questa domanda, anche se si presenta così spesso. Stavo pensando di avviarne uno. "Qual è la differenza tra $, [] e [[]] quando si lavora con data.frames?" – MrFlick

Problemi correlati