将_添加到R中的多个元素

时间:2015-08-21 22:33:03

标签: r string stringr

我有数百个变量名称,如下所示:

IndexError: index 0 is out of bounds for axis 0 with size 0

但我需要它们看起来像这样:

c("B02001001","B02001002","B23020003","B19057001")

我假设有一种简单的方法可以做到这一点......也许是字符串?任何想法将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:4)

我们可以将sub与捕获组一起使用。我们将第一个组捕获为6个字符((.{6})),后跟字符,直到字符串结尾为第二个字符。在替换中,我们可以在第一个(_)和第二个(\\1)捕获组之间使用\\2

sub('(.{6})(.*)$', '\\1_\\2', v1)
#[1] "B02001_001" "B02001_002" "B23020_003" "B19057_001"

数据

v1 <- c("B02001001","B02001002","B23020003","B19057001")

答案 1 :(得分:3)

看起来你可以做到

x <- c("B02001001","B02001002","B23020003","B19057001")

paste(substr(x, 1L, 6L), substr(x, 7L, 1e5L), sep = "_")
# [1] "B02001_001" "B02001_002" "B23020_003" "B19057_001"

1e5L仅作为安全预防措施,以防某些字符串超过9个字符。如果您知道他们都是9,那么只需用9L替换它。你也可以使用substring()作为第二个电话而不用担心。

paste(substr(x, 1L, 6L), substring(x, 7L), sep = "_")
# [1] "B02001_001" "B02001_002" "B23020_003" "B19057_001"