我在R中有一个字符串。我想找到字符串的一部分并附加可变数量的零。例如,我有1 2 3
。有时我希望它是1 20 3
;有时我希望它是1 2000 3
。如果我在变量中存储附加零的数量,我怎样才能在"替换"中使用它。 sub
命令的一部分?
我记得这样的代码:
s <- '1 2 3'
z <- '3'
sub('(\\s\\d)(\\s.*)', '\\10{z}\\2', s)
此代码返回1 20{z} 3
。但我想要1 2000 3
。我怎样才能得到这种结果?
一种方法是
s <- '1 2 3'
z <- '3'
zx <- paste(rep(0, z), collapse = '')
sub('(\\s\\d)(\\s.*)', paste0('\\1', zx, '\\2'), s)
但这有点笨重。
答案 0 :(得分:0)
尝试使用stringi包中的连接运算符:
require(stringi)
"abc"%stri+%"123abc"
## [1] "abc123abc"
答案 1 :(得分:0)
您创建替换字符串zx
的方法非常好。但是,您可以改进sub
命令。如果使用lookbehind和lookahead而不是匹配组,则无需创建新的替换字符串。您可以直接使用zx
。
sub("(?<=\\s\\d)(?=\\s)", zx, s, perl = TRUE)
# [1] "1 2000 3"