2017-05-17 2 views
0

Ich habe einen Datensatz blah mit einer Spalte kw. Es gibt Zehntausende von Strings, von denen einige Satzlängen haben. Ich habe bereits die überwiegende Mehrheit dessen, was ich ersetzen möchte, durch eine for Schleife ersetzt, die Teilstrings durch Teilstringkategorien ersetzt. Ich kann jedoch unmöglich an alle Teilstrings denken, die ersetzt werden müssen - während das meiste des schweren Hebens getan ist, gibt es nur eine gute Menge an Randfällen und ich möchte mit ihnen umgehen, wenn sie entstehen.Eine benutzerdefinierte Funktion schreiben, die einen oldstring akzeptiert, eine Datenframesspalte durchsucht und durch einen Newsstring ersetzt

Ich möchte eine Funktion cleanup erstellen, wo ich es eine oldsubstring und eine newsubstring übergeben kann und die Funktion ersetzen Instanz von oldsubstring in blah$kw mit newspeedstring.

Hier ist, was ich bisher geschrieben habe:

cleanup <- function(oldstring, 
        newstring) { 
      blah$kw[grepl(oldstring, 
         blah$kw)] <- sapply(blah$kw[grepl(oldstring, 
                  blah$kw)], 
              function(x) gsub(oldstring, 
                   newstring, 
                   x)) 
} 

Dies kann dumm aussehen

, ich habe keine Ahnung - ich bin ganz auf R. neue Aber ich bin es stützt die einmalige off Code, den ich gefunden habe, der hier ist:

blah$kw[grepl(oldstring, 
       blah$kw)] <- sapply(blah$kw[grepl("oldstring", 
               blah$kw)], 
            function(x) gsub("oldstring", 
                "newstring", 
                x)) 
} 

Und das funktioniert genau wie ein Charme. Wie auch immer, jede Hilfe wäre riesig. Vielen Dank!

Antwort

0

Es ist in der Regel am besten, den Datensatz nicht fest auf die Funktion zu codieren und ihn als Variable zu übergeben. Was Sie suchen kann

cleanup <- function(df1, oldstring, newstring) { 
    df1[grepl(oldstring, df1)] <- gsub(oldstring, newstring, df1[grepl(oldstring, df1)]) 
    df1 
} 

blah$bw <- cleanup(blah$bw, "a", "y") 

Hinweis über subsetting erreicht werden: das wird nicht funktionieren, wenn die Saiten als Faktoren

+0

Dank Mann gespeichert sind, das sieht aus wie diese es schön decken! Und danke für den Tipp, nicht hart zu codieren. – mowshowitz

Verwandte Themen