Как получить индексный вектор в rpy2 или, если он не существует, как выбрать два столбца? - PullRequest
3 голосов
/ 24 февраля 2012

Я хочу сделать то же самое, что и в примере R, найденном здесь: http://www.r -tutor.com / r-введение / data-frame / data-frame-column-slice . Он использует данные mtcars, которые выглядят так:

               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 ...

И затем выбирает столбцы mpg и hp с индексным вектором

> mtcars[c("mpg", "hp")] 
                   mpg  hp 
Mazda RX4         21.0 110 
Mazda RX4 Wag     21.0 110 
Datsun 710        22.8  93 

Просто получить одну строку в rpy2, чтобы получить mpg в этом случае:

import rpy2.robjects as R
R.r['mtcars'][0]

Однако я не знаю, как выбрать два столбца

import rpy2.robjects as R
R.r['mtcars'][R.vectors.IntVector([0,3])]

Дает

TypeError: 'IntVector' object cannot be interpreted as an index

Так же, как и любой другой вектор в R.vectors (я пробовал их все)

Итак, мой вопрос сводится к тому, как получить индексный вектор в rpy2 или, если его нет, как выбрать два столбца?

Спасибо!

1 Ответ

3 голосов
/ 29 февраля 2012

Отвечено в списке рассылки rpy. Используйте rx / rx2 для извлечения элемента R-way (обратите внимание, что индексирование начинается с единицы в R).

import rpy2.robjects as R
R.r['mtcars'].rx[R.vectors.IntVector([0,3]).ro + 1]
...