Rpy2 Fehler: "unerkanntes Escape in Zeichenfolge"

Ich habe ein Stück Code in R, das ich gerne in meinen Python-Code einfügen möchte. Zu diesem ziel benutze ich rpy2. Der R-Code beinhaltet viele reguläre Ausdrücke und es scheint, dass rpy2 nicht ordnungsgemäß behandelt oder vielleicht bin ich nicht kodieren sie adäquat.

Hier ist ein Beispiel für ein Stück Code, dass Worte und andere, die nicht funktioniert:

1) Es funktioniert : Eine sehr triviale removeStopWords-Funktion:

import rpy2.robjects as robjects from rpy2.robjects.packages import importr robjects.r(''' library(data.table) library(tm) removeStopWords <- function(x) gsub(" ", " ", removeWords(x, stopwords("english"))) ''') In [4]: r_f = robjects.r['removeStopWords'] In [5]: r_f('I want to dance')[0] Out[5]: 'I want dance' 

2) es funktioniert nicht : eine auch triviale Funktion, um führende und nachgestellte Leerzeichen zu entfernen:

 robjects.r(''' library(data.table) library(tm) trim <- function (x) gsub("^\\s+|\\s+$", "", x) ''') Error: '\s' is an unrecognized escape in character string starting ""^\s" p = rinterface.parse(string) Abort 

Und ich bin von IPython "vertrieben"

Ich habe es direkt ausprobiert

 import rpy2.rinterface as ri exp = ri.parse('trim <- function (x) gsub("^\\s+|\\s+$", "", x)') 

Aber das Ergebnis ist das gleiche, Abort und dann aus IPython

In diesem Stadium weiß ich nicht wirklich was zu versuchen Der R-Code ist ziemlich groß und bewegt sich alle von R bis python würde mir etwas Zeit nehmen … und ich würde es lieber nicht so etwas machen wollen.

Jede Hilfe wird sehr geschätzt!

Vielen Dank im Voraus für Ihre Zeit.

One Solution collect form web for “Rpy2 Fehler: "unerkanntes Escape in Zeichenfolge"”

Wenn du \\ in einer Zeichenfolge in Python schreibst, wird es als \ gespeichert, da \ ein Escaping-Zeichen ist. Wenn also R den Code ausführt, sieht er "^\s+|\s+$" . Aber es ist auch und entkommender Charakter in R und \s nicht als irgendein entkommener Charakter erkannt.

Wenn du willst, dass du "^\\s+|\\s+$" "^\\\\s+|\\\\s+$" , musst du in Python ( "^\\\\s+|\\\\s+$" doppelte Anzahl von Backslashs) "^\\\\s+|\\\\s+$" schreiben.

  • Konvertieren eines R ListVector in eine Python-Liste mit rpy2
  • Aufspalten und Verketten von Dataframes in Python-Pandas für das Plotten mit rpy2
  • Python Pandas zu R dataframe
  • Der rpy2-Import funktioniert nicht
  • Rpy2, DiceKriging, Multiprocessing: Speicherleck
  • Pandas mit rpy2 und Multiprocessing
  • Python rpy2 und quantmod Beispiele
  • Wie benutzt man die Variable aus der Python in rpy2?
  • Python ist die beste Programmiersprache der Welt.