使用rpy2,如何用“。”调用功能在变量名中?

时间:2019-04-11 16:21:18

标签: python r rpy2

我想使用rpy2从R jump包中调用regsubsets函数。正弦似乎没有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)

调用该函数确实需要参数 really.big = T 。那当然是行不通的,因为在python中。具有与R相对的直接功能。(我得到“ SyntaxError:关键字不能是表达式”)。谁能告诉我如何从rpy2调用它?

我已经尝试过使用leaps.regsubsets({"x":x ... "really.big":T})之类的kwarg来做到这一点,但这还是行不通的,而且我也不知道R中的“ T”是什么。

好的,我发现"." gets transleted to "_"。但可悲的是,它仍然无法正常工作,以某种方式无法传递该论点。

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 个答案:

答案 0 :(得分:1)

rpy2-2.2.x的注释中的文档链接非常旧。当前版本的文档位于:

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

否则,文档非常清楚,几乎不可能提取R省略号(...)可以接受的参数(这是@CristiFati在注释中指出的内容)。

您可以在**中使用语法无效的参数名称。例如此处:

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