2017-07-11 1 views
0

私はPython(2.7)でR関数を書くためにrpy2を試していますが、文字列 'reg'を含むメソッドの各要素のインデックスを保存するR factorwarsには1つの関数があります:rpy2を使用した文字列のフォーマットエスケープ

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がInfactは少し長く、私は%で、文字列だけでなく、\%後%%「%の罪%」を使用して試してみましたが、Pythonは%としてそれを解釈し続ける私は整数を要求。どのようにPythonで%%でエスケープするか、または%でRに似た関数を書くことができるかについての考え方。

編集:含まれているより多くのコード、インポートと関数。問題の多くは、コードを変更するとRコードが間違っているということです。おそらく、書式を上書きするthis_is_only_string( 'some string')のPython関数ですか? %%で

%%は、エラーメッセージを表示します

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

答えて

0

%は%記号を倍増してみてください、printfスタイルディレクティブとして解釈されている場合:%%in%%

+0

私は質問を変更しました、それがより明確であることを願っています。残念ながら、%%の%%は機能していません。 – Lytics

+0

これはまったく異なるエラーです。 '%'記号を二重にすると、 '%i'は書式設定指令として解釈されました。これはあなたの質問の内容です。間違ったRの構文を助けてはいけません。 – BoarGules

+0

タイトルにrpy2を書いた理由があります。 – Lytics

0

すべては、この最後に動作しているようです:

>>> 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] 
関連する問題