2017-05-17 10 views
0

データセットblahkwがあります。何千もの弦があり、そのうちのいくつかは文章長です。置換対象の大部分をすでにループのforに置き換え、部分文字列を部分文字列カテゴリに置き換えました。しかし、置き換えが必要なすべての部分文字列について考えることはできません。重い作業のほとんどが行われていますが、エッジケースが多量に発生し、発生したときにそれらを処理したいのです。古い文字列を受け取り、データフレーム列を検索し、新しい文字列で置き換えるユーザー定義関数を作成します。

私はそれにoldsubstringとnewsubstringを渡すことができる関数cleanupを作成したいと思います。関数は、blah$kwのoldsubstringのインスタンスをnewsubstringに置き換えます。 - Rに - 私は非常に新しいしかし、私は一回限りのオフにそれを基づかい

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

これは愚かに見えることがあり、私は見当がつかない:ここ

は、私がこれまでに書いたものです見つけたコード:

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

これはちょうど魅力のように機能します。とにかく、どんな助けも巨大になるでしょう。ありがとう!

答えて

0

通常、関数にデータセットをハードコードして変数として渡さないことがベストプラクティスです。あなたが探しているが、注意

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

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

サブセット

を介して達成することができる:これはうまくそれをカバーするように、あなたの文字列が要因として

+0

おかげで男を保存されている場合、これは動作しません、これが見えます!ハードコーディングをしないことについてのヒントをありがとう。 – mowshowitz

関連する問題