R如果在位置之后或多次出现,则替换字符串中的字符

R如果在位置之后或多次出现,则替换字符串中的字符,r,string,replace,text-mining,textreader,R,String,Replace,Text Mining,Textreader,我试图用导入采访记录,但它的工作原理是通过定位分隔符(通常是冒号)将文本分为两列。在抄本中,我有一个冒号偶尔出现在回复文本的正文中,这会导致错误。我希望用其他东西(例如破折号或下划线)替换这些冒号,但不确定如何继续下去 我可以通过gregexpr()找到所有冒号的位置,但是如何替换它们呢?我能通过if语句使用grep或sub吗 编辑 Ok通过stringr包找到了一个非永久性解决方案: 首先我把所有的冒号都换掉 dat = str_replace_all(text,":","_") 然后,我只

我试图用导入采访记录,但它的工作原理是通过定位分隔符(通常是冒号)将文本分为两列。在抄本中,我有一个冒号偶尔出现在回复文本的正文中,这会导致错误。我希望用其他东西(例如破折号或下划线)替换这些冒号,但不确定如何继续下去

我可以通过gregexpr()找到所有冒号的位置,但是如何替换它们呢?我能通过if语句使用grep或sub吗

编辑

Ok通过stringr包找到了一个非永久性解决方案:

首先我把所有的冒号都换掉

dat = str_replace_all(text,":","_")
然后,我只重新插入我想保留的第一个冒号

dat = str_replace(dat,"_",":")

不太好,但它起作用了……

您可以使用strsplit,然后在第一个元素之后合并所有元素。比如:

txn <- c("Int1: This is some text.",
         "Int2: As I speak I take a long pause: for effect",
         "Int1: This inteview is over.")               

transcripts <- strsplit(txn, ":")
interviewer <- sapply(transcripts, "[", 1)
scripts <- sapply(transcripts, function(x) paste(x[-1], collapse = ":"))
dat <- data.frame(interviewer, scripts)

txn stringi::stri\u replace\u first\u regex