【问题标题】:string formatting escape using rpy2使用 rpy2 进行字符串格式化转义
【发布时间】:2017-07-11 07:50:52
【问题描述】:

我正在尝试使用 rpy2 在 Python(2.7) 中编写 R 函数,并且我在 R factorwars 中有一个函数可以保存包含字符串 'reg' 的方法中每个元素的索引:

from rpy2.robjects import r, pandas2ri
import rpy2.robjects as rob 
import pandas as pd
pandas2ri.activate()

rstring="""
function(methods){
factorvars=which(methods %in% 'reg')
}
"""
rfunc=rob.r(rstring)
new_data=rfunc(methods)

rstring 实际上有点长,我尝试在字符串之后使用 '%sin%' %% 以及 \%in%,但 Python 一直将其解释为 %i 并要求一个整数。关于如何在 Python 中转义 %in% 或在 R 中使用 % 编写类似函数的任何想法。

编辑:包含更多代码、导入和函数。大部分问题是当我更改代码时,R 代码会出错。 this_is_only_string('some string') 的任何 python 函数可能会覆盖格式?

%%in%% 给出错误信息:

  <text>:9:41: unexpected 'in'
8:         fact = c('polyreg', 'logreg')
9:         factorvars=which(method_array %%in

【问题讨论】:

    标签: python r rpy2


    【解决方案1】:

    如果 % 被解释为 printf 样式指令,请尝试将 % 符号加倍:%%in%%

    【讨论】:

    • 我改变了问题,希望它更清楚。不幸的是,%%in%% 也不起作用。
    • 这是一个完全不同的错误。将% 符号加倍停止%i 被解释为格式化指令,这就是您的问题。对不正确的 R 语法无能为力。
    • 但是你的逃跑问题已经解决了,你也把它放在了标​​题中。
    【解决方案2】:

    一切似乎都在为此努力:

    >>> from rpy2 import robjects
    >>> rstring = """ function(x) { x %in% c("a", "b") } """
    >>> robjects.r(rstring)("a")
    Out[6]: 
    R object with classes: ('logical',) mapped to:
    <BoolVector - Python:0x7f962c089608 / R:0x2919c88>
    [       1]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 2011-10-26
      • 1970-01-01
      相关资源
      最近更新 更多