Используя rpy2, как вызвать функцию с "." в имени переменной? - PullRequest
1 голос
/ 11 апреля 2019

Я хотел бы использовать 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)

Для вызова этой функции требуется аргумент действительности.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

1 Ответ

1 голос
/ 14 апреля 2019

Ссылка на документацию в комментариях для 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})
...