【问题标题】:rpy2 running R functionrpy2运行R函数
【发布时间】:2017-02-18 14:24:50
【问题描述】:

我有一个 R 函数

 square_num <- function(x) {
     return(x*x)
 }

当我通过 rpy2 运行它时:

from rpy2.robjects.packages import SignatureTranslatedAnonymousPackage as STAP
string = """
square_num <- function(x) {
     return(x*x)
}    
"""

testy = STAP(string, "testy")

Jack = testy.square_num(10)
print(Jack)

它有效。

当我在 R 文件中有函数并使用它运行时

from rpy2.robjects.packages import SignatureTranslatedAnonymousPackage as STAP
with open('Algo.r', 'r') as f:
    string = f.read()

testy = STAP(string, "testy")

Jack = testy.square_num(10)
print(Jack)

我明白了:

Traceback (most recent call last):
  File "Main.py", line 25, in <module>
    testy = STAP(string, "testy")
  File "/usr/local/lib/python2.7/dist-packages/rpy2/robjects/packages.py", line     290,  in __init__
reval(string, env)
  File "/usr/local/lib/python2.7/dist-packages/rpy2/robjects/packages.py", line 75, in reval
p = rinterface.parse(string)
rpy2.rinterface.RParsingError

两种情况下的功能相同。我只是将它复制并粘贴到一个 .r 文件中?

【问题讨论】:

    标签: python r rpy2


    【解决方案1】:

    您是否检查了 Python 变量 string 的内容?

    以下应该有效:

    from rpy2.robjects.packages import SignatureTranslatedAnonymousPackage as STAP
    string = """
    square_num <- function(x) {
         return(x*x)
    }    
    """
    
    testy = STAP(string, "testy")
    
    Jack = testy.square_num(10)
    print(Jack)
    
    with open('algo.R', 'w') as fh_out:
        fh_out.write(string)
    
    with open('algo.R', 'r') as f:
        string_again = f.read()
    
    testy = STAP(string_again, "testy")
    
    Jack = testy.square_num(10)
    print(Jack)
    

    【讨论】:

    • 是的,这行得通。我想可能是windows和linux的行尾……
    • 也可能是编码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    相关资源
    最近更新 更多