使用rpy2,如何在变量名中调用带有“。”的函数?

问题描述 投票:1回答:1

我想使用rpy2从R leaps包中调用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})这样的kwargs这样做,但这也行不通,我也不知道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
python r rpy2
1个回答
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})
© www.soinside.com 2019 - 2024. All rights reserved.