如何在R中的字符串中添加字符

Ela*_*Ela 5 r

我有这样的事情:

text <- "abcdefg"
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:

"abcde.fg"
Run Code Online (Sandbox Code Playgroud)

如何在不向向量分配新字符串的情况下实现此目的,text而是改变向量本身的元素?最后,我想随机插入点,实际上不是点,而是矢量的字符元素.

akr*_*run 9

我们可以尝试sub将前5个字符(.{5})捕获为group((.*)),然后是另一个捕获组()中的一个或多个字符,然后替换为第一个group(\\1)的后向引用,.后跟第二个反向引用(\\2).

sub("(.{5})(.*)", "\\1.\\2", text)
#[1] "abcde.fg"
Run Code Online (Sandbox Code Playgroud)

注意:此解决方案是直接的,不需要paste任何内容.


lmo*_*lmo 5

另外,substring随着paste工作:

paste(substring(text, c(1,6), c(5,7)), collapse=".")
"abcde.fg"
Run Code Online (Sandbox Code Playgroud)

substring函数接受向量启动 - 停止参数,并在所需位置"拆分"该字符串.然后我们可以将paste这些元素放在一起并与崩溃参数一起.

如果不依赖于向量参数,我们可以使用更新的推荐substr函数:

paste(c(substr(text, 1, 5), substr(text, 6,7)), collapse=".")
[1] "abcde.fg"
Run Code Online (Sandbox Code Playgroud)

请注意,正如konrad-rudolph所提到的,这将创建向量的副本.