Como posso obter um vetor de índice em rpy2 ou, se não existir, como posso selecionar duas colunas?
Pergunta
Quero fazer a mesma coisa que no exemplo R encontrado aqui: http://www.r-tutor.com/r-introduction/data-frame/data-frame-column-slice.Ele faz uso do banco de dados mtcars que se parece com isto:
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 então seleciona a coluna mpg e hp com um vetor de índice
> mtcars[c("mpg", "hp")]
mpg hp
Mazda RX4 21.0 110
Mazda RX4 Wag 21.0 110
Datsun 710 22.8 93
É simples recuperar uma linha em rpy2, para obter mpg neste caso:
import rpy2.robjects as R
R.r['mtcars'][0]
No entanto, não sei como selecionar duas colunas
import rpy2.robjects as R
R.r['mtcars'][R.vectors.IntVector([0,3])]
Dá
TypeError: 'IntVector' object cannot be interpreted as an index
Assim como qualquer outro vetor que está em R.vectors (tentei todos eles)
Então, minha pergunta se resume a: como posso obter um vetor de índice em rpy2 ou, se isso não existir, como posso selecionar duas colunas?
Obrigado!
Solução
Respondido na lista de discussão rpy.Use rx/rx2 para extrair o elemento R-way (observe que a indexação começa em um em R).
import rpy2.robjects as R
R.r['mtcars'].rx[R.vectors.IntVector([0,3]).ro + 1]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow