次のようなデータフレームがあります。
'data.frame': 81 obs. of 2 variables:
$ start: int 232 10697 10965 12279 15647 16897 17033 17612 17719 17983 ...
$ end : int 243 10702 10970 12284 15652 16902 17038 17617 17724 17988 ...
これらの開始/終了オフセットのペアで消去したいコンテンツを含む文字列があります。したがって、バイト オフセット 232 と 234 の間にあるものは何でも、「消去」してスペースを縮小したいと考えています。文字列を逆方向に処理したいことがわかったので、最後に変更しても、先頭に近いオフセットは引き続き有効です。私がこれまでに持っているコードは次のとおりです。
for (i in nrow(cutpoints):1) {
row = cutpoints[i,]
substr(sc, row$start, row$end) <- " "
}
しかし、後でscを印刷すると、削除したいすべての部分文字列の最初の文字だけが削除されます。誰かが私が間違っていることについて何か考えがありますか? さらに、これはベクトル化できますか?
更新- stringr の str_sub を使用してみました:
> hw <- "Hadley Wickham"
> cuts <- data.frame(start=c(1,8), end=c(6,14))
> str_sub(hw, rev(cuts$start), rev(cuts$end)) <- " "
> hw
[1] "Hadley " " Wickham"
したがって、明らかに、R での文字列処理で何をしているのか理解できません。