2017-10-09 9 views
1

"string1"という文字列内のテキストを部分的に置き換えようとしています。複雑な複数パターン置換

私が見て、テキストの同じ文字列に置き換えたい「LocateMe」に含まれる複数のパターンがあります:「!= -9999」

複数のパターンのような特殊文字を含む非常に複雑です"="と "["

gsubを使用してこれを達成することは可能ですか、別の機能を使用する必要がありますか?どんな指針も大変ありがとうございます。

string1 <- "Birth == unique.combos[17,1] & hid_age == unique.combos[17,2] & z02_gender == unique.combos[17,3]" 

LocateMe <- c("== unique.combos[37,1]", "== unique.combos[38,1]", "== unique.combos[39,1]", "== unique.combos[40,1]", "== unique.combos[41,1]", "== unique.combos[42,1]", 
       "== unique.combos[17,1]", "== unique.combos[17,3]", "== unique.combos[18,3]") 


string2 <- gsub(LocateMe, "!= -9999", string1) 
+0

@Gregor - 有用な洞察をいただきありがとうございます。私はforループを使用することを検討していませんでした。私はまだ自分のRスキルを開発しています。私の現在のコードではこの解決策は十分であるはずです – user104435

答えて

1

gsubは、検索文字列の上にベクトル化されていない、それは、一度に1つので動作します。だから、fixed = Tを使用して

string2 <- string1 
for (i in seq_along(LocateMe)) { 
    string2 <- gsub(LocateMe[i], "!= -9999", string2, fixed = TRUE) 
} 

のようなループを使用する必要があります特殊文字として解釈されることから、これらのブラケット、カンマ、およびドットを防ぐことができます。

また、Rで何をしようとしていても、検索/置換にgsubを使用するよりも確かに良い方法があると言います。おそらくはeval(parse()) ingが続きます。これは、デバッグには苦労し、拡張は困難です。

関連する問題