Come posso ottenere un indice in RPY2, o se ciò non esiste, come posso selezionare due colonne?
Domanda
Voglio fare la stessa cosa del r Esempio trovato qui: http://www.r-tutor.com/r-introduction/data-frame/data-frame-Column-slice .Fa uso del Datase MtCars che assomiglia a questo:
mpg cyl disp hp drat wt ...
Mazda RX4 21.0 6 160 110 3.90 2.62 ...
Mazda RX4 Wag 21.0 6 160 110 3.90 2.88 ...
Datsun 710 22.8 4 108 93 3.85 2.32 ...
.
e quindi seleziona la colonna MPG e HP con un indice Vector
> mtcars[c("mpg", "hp")]
mpg hp
Mazda RX4 21.0 110
Mazda RX4 Wag 21.0 110
Datsun 710 22.8 93
.
È semplice recuperare una riga in RPY2, per ottenere MPG in questo caso:
import rpy2.robjects as R
R.r['mtcars'][0]
.
Tuttavia, non so come selezionare due colonne
import rpy2.robjects as R
R.r['mtcars'][R.vectors.IntVector([0,3])]
.
dà
TypeError: 'IntVector' object cannot be interpreted as an index
.
Proprio come ogni altro vettore che è in r.vectors (li ho provato tutti)
Quindi la mia domanda si riduce, come posso ottenere un indice in RPY2, o se ciò non esiste, come posso selezionare due colonne?
Grazie!
Soluzione
Risposta alla mailing list RPY.Utilizzare l'elemento RX / RX2 per estrarre il R-Way (nota che l'indicizzazione inizia a uno in r).
import rpy2.robjects as R
R.r['mtcars'].rx[R.vectors.IntVector([0,3]).ro + 1]
.