R gsub插入大字符串

R gsub insert into large string

我想将子字符串 "A" 插入长度 > 65536 的字符串中,位置 n。我正在使用 gsub 来执行此操作,因为它非常高效。

n = 5
text <- paste(rep("a", 70000), collapse = "")
lhs <- '^(.{n})(.*)$'
rhs <- '\1A\2'
gsub(lhs, rhs, text, perl=TRUE)

当我选择 n 较小时,例如5、代码运行正常。但是,如果 n = 66000 显示以下错误消息:

In gsub(lhs, rhs, text, perl = TRUE) : PCRE pattern compilation error
    'number too big in {} quantifier'
    at '})(.*)$'

我该如何解决这个问题?

由于模式长度限制,您似乎无法在此处使用 sub。但实际上,对于这个问题,基本字符串函数应该可以工作,而且可能会更有效率:

insertA <- function(x, n) {
    return(paste0(substring(x, 1, n-1), "A", substring(x, n, nchar(x))))
}

text <- paste(rep("a", 30), collapse = "")
insertA(text, 5)

[1] "aaaaAaaaaaaaaaaaaaaaaaaaaaaaaaa"

这种方法简单地使用 substringpasteA 字符分成用户选择的两半。