Comment puis-je obtenir un vecteur d'index dans RPY2, ou si cela n'existe pas, comment puis-je sélectionner deux colonnes?
Question
Je veux faire la même chose que dans l'exemple r trouvé ici: http://www.r-tutor.com/r-introduction/data-frame/data-frame-column-slice. Il utilise la base de données MTCARS qui ressemble à ceci:
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 ...
Puis sélectionne la colonne MPG et HP avec un vecteur d'index
> mtcars[c("mpg", "hp")]
mpg hp
Mazda RX4 21.0 110
Mazda RX4 Wag 21.0 110
Datsun 710 22.8 93
Il est simple de récupérer une ligne dans RPY2, pour obtenir MPG dans ce cas:
import rpy2.robjects as R
R.r['mtcars'][0]
Cependant, je ne sais pas comment sélectionner deux colonnes
import rpy2.robjects as R
R.r['mtcars'][R.vectors.IntVector([0,3])]
Donner
TypeError: 'IntVector' object cannot be interpreted as an index
Tout comme tous les autres vecteurs qui se trouvent dans R. Vecteurs (je les ai tous essayés)
Donc, ma question se résume, comment puis-je obtenir un vecteur d'index dans RPY2, ou si cela n'existe pas, comment puis-je sélectionner deux colonnes?
Merci!
La solution
Répondu sur la liste de diffusion RPY. Utilisez le RX / RX2 pour extraire l'élément de la voie R (notez que l'indexation commence à un en R).
import rpy2.robjects as R
R.r['mtcars'].rx[R.vectors.IntVector([0,3]).ro + 1]