Я хотел бы использовать 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
Ссылка на документацию в комментариях для 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})
... "really.big": "T"
или, возможно,leaps.T
?