Используя rpy2, как вызвать функцию с «.» В имени переменной?

1

Я хотел бы использовать rpy2 для вызова функции regsubsets из пакета R leaps. Синус, кажется, не имеет эквивалента Python (по крайней мере, не то, что я нашел).

import pandas
import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri
import rpy2.robjects.packages as rpackages

pandas2ri.activate()
leaps = rpackages.importr("leaps")


x = pandas.DataFrame(np.random.randn(10,10))
y = pandas.DataFrame(np.random.randn(10))

leaps.regsubsets(x=x, y=y, nbest=10, nvmax=3, really.big=T)

Вызов этой функции действительно требует аргумента fact.big = T. Это, конечно, не работает, потому что в Python. имеет прямую функцию в отличие от R. (я получаю "SyntaxError: ключевое слово не может быть выражением"). Может кто-нибудь сказать мне, как это назвать из rpy2?

Я пытался сделать это с помощью kwargs, таких как leaps.regsubsets({"x":x... "really.big":T}) но это также не работает, и я также не знаю, что такое "T" в R,

Хорошо, я узнал, что "." переводится в "_". но, к сожалению, это все еще не работает, так или иначе аргумент не передается.

leaps.regsubsets(x=X, y=Y, nbest=10, nvmax=3, really_big=True)

по-прежнему выдает ошибку: RRuntimeError:

Error in leaps.exhaustive(a, really.big = really.big) : 
  Exhaustive search will be S L O W, must specify really.big=T
  • 0
    Вы должны определить T, если хотите использовать его в качестве идентификатора. Ничего не знаю о R (или rpy ), но если вы используете подход kwargs , попробуйте: ... "really.big": "T" или, возможно, leaps.T ?
  • 0
    получается, что T в R просто True - так что загадка решена, но как я могу вызвать функцию с пакетом, подобным «Действительно. Биг» из Python?
Показать ещё 1 комментарий
Теги:
rpy2

1 ответ

0

Ссылка на документацию в комментариях для rpy2-2.2.x, которая довольно старая. Документация для текущей версии находится по адресу:

https://rpy2.github.io/doc/v3.0.x/html/robjects_functions.html

В противном случае в документации достаточно ясно о почти невозможности извлечения параметров, которые могут быть приняты в многоточии (...) (именно на это @CristiFati указывает в комментариях).

Вы можете использовать синтаксически неверные имена параметров с **. Например здесь:

leaps.regsubsets(x=x, y=y,
                 nbest=10, nvmax=3,
                 **{'really.big': true})

Ещё вопросы

Сообщество Overcoder
Наверх
Меню