在python中包装R函数

时间:2014-08-09 11:19:50

标签: python r ipython rpy2

我想包装一个包含在princurve包中的R函数。 使用ipython,我成功地使用了ipython单元格R magic:

%%R -i X -o s,lambda
fit1<-principal.curve(X)
s <- fit1$s
l <- fit1$lambda

但我想要一个可以从以下模块导入的函数:

from mymodule import principal_curve
s, l = principal_curve(X)

我想我必须直接使用rpy,我不确定如何......

2 个答案:

答案 0 :(得分:2)

我不使用R,但在docs中使用此示例,您可以定义一个函数并将其导入到python模块中:

r_mod.py

from rpy2.robjects.packages import SignatureTranslatedAnonymousPackage

string = """
square <- function(x) {
    return(x^2)
}

cube <- function(x) {
    return(x^3)
}
"""

powerpack = SignatureTranslatedAnonymousPackage(string, "powerpack")

py_mod.py

from r_mod import powerpack

print powerpack.square(3)
[1] 9

答案 1 :(得分:1)

每当函数在R包中时,您都可以使用importr

from rpy2.robjects.packages import importr
princurve = importr('princurve')

princurve.principal_curve(X)