如何在R

时间:2016-08-01 17:19:14

标签: r

我有这样的事情:

text <- "abcdefg"

我想要这样的事情:

"abcde.fg"

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

2 个答案:

答案 0 :(得分:8)

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

sub("(.{5})(.*)", "\\1.\\2", text)
#[1] "abcde.fg"

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

答案 1 :(得分:5)

此外,substring paste将有效:

paste(substring(text, c(1,6), c(5,7)), collapse=".")
"abcde.fg"

substring函数接受向量起始 - 停止参数和&#34;分裂&#34;所需位置的字符串。然后我们可以paste将这些元素放在一起并使用崩溃参数。

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

paste(c(substr(text, 1, 5), substr(text, 6,7)), collapse=".")
[1] "abcde.fg"

请注意,如konrad-rudolph所述,这将创建矢量的副本。