これがrmarkdownにマージされたので、gregexpr()
のエラーはとりあえずなんとかなりました。
これでやっとblogdown使える…!
ちなみに、
で書いたやつは、kohskeさんのツイートで知ったんですが、
ifelse(is.na(str_extract(hoxos, pattern)), hoxos, str_replace(hoxos, pattern, toupper))
— kohske (@kohske) 2017年5月7日
とか? https://t.co/LaOs3oGY0B
stringrパッケージのstr_replace()
/str_replace_all()
が置き換えに使う文字列だけではなく変換する関数を指定することもできて、これがほぼ求めていたものでした。
text <- c("A1", "B1", "CC") pattern <- "[A-Z][0-9]" # マッチした文字列は小文字に変換され、マッチしなかった文字列はそのまま stringr::str_replace_all(text, pattern, tolower) #> [1] "a1" "b1" "CC"
ただし、str_replace()
はpattern
にマッチしなかったときはNA
を返してしまうというstr_sub()
の仕様?を引き継いでしまっています。
stringr::str_replace(text, pattern, tolower) #> [1] "a1" "b1" NA
とはいえ、たぶん、ほとんどのケースでマッチする文字列はすべて置き換えたいはずなので、str_replace_all()
の方を使っておけば大丈夫です。
これは、stringiには直してもらって、stringrにもそのうち取り込まれるはずです。たぶん。