データ、文字ベクトル (最終的には折りたたむので、ベクトルのままか、単一の文字列として扱われるかは気にしません)、パターンのベクトル、置換のベクトルがあります。データ内の各パターンをそれぞれの置換で置き換えたい。私はそれを astringr
と for ループでやり遂げましたが、それを行うためのもっと R のような方法はありますか?
require(stringr)
start_string <- sample(letters[1:10], 10)
my_pattern <- c("a", "b", "c", "z")
my_replacement <- c("[this was an a]", "[this was a b]", "[this was a c]", "[no z!]")
str_replace(start_string, pattern = my_pattern, replacement = my_replacement)
# bad lengths, doesn't work
str_replace(paste0(start_string, collapse = ""),
pattern = my_pattern, replacement = my_replacement)
# vector output, not what I want in this case
my_result <- start_string
for (i in 1:length(my_pattern)) {
my_result <- str_replace(my_result,
pattern = my_pattern[i], replacement = my_replacement[i])
}
> my_result
[1] "[this was a c]" "[this was an a]" "e" "g" "h" "[this was a b]"
[7] "d" "j" "f" "i"
# This is what I want, but is there a better way?
私の場合、各パターンが最大 1 回発生することはわかっていますが、すべてのパターンが発生するわけではありません。str_replace_all
パターンが複数回発生する可能性がある場合に使用できることはわかっています。ソリューションがそのオプションも提供することを願っています。my_pattern
また、 andを使用しmy_replacement
て、これらのベクトルを引数として持つ関数の一部にすることができるソリューションも必要です。