简体   繁体   English

在Python中包装R函数

[英]Wrap R function in python

I would like to wrap a R function contained in a package princurve. 我想将princurve包中的R函数包装起来。 With ipython I do it successfully with an ipython cell R magic: 使用ipython,我可以使用ipython cell R magic成功完成此操作:

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

but I want a function that I can import from a module like: 但是我想要一个可以从模块导入的函数,例如:

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

I guess I have to use rpy directly, I am not sure how... 我想我必须直接使用rpy,我不确定如何...

I don't use R but using this example in the docs you can define a function and import it into a python module: 我不使用R,但是在文档中使用此示例,您可以定义一个函数并将其导入到python模块中:

r_mod.py 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 py_mod.py

from r_mod import powerpack

print powerpack.square(3)
[1] 9

Whenever a function is in an R package, you can use importr : 只要R包中有函数,就可以使用importr

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

princurve.principal_curve(X)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM