我有这样的事情:
text <- "abcdefg"
我想要这样的事情:
"abcde.fg"
如何在不向向量text
分配新字符串的情况下实现此目的,而是更改向量本身的元素?最后,我想随机插入点,实际上不是点,而是矢量的字符元素。
答案 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所述,这将创建矢量的副本。