如何在 R 中按照特定顺序分割字符

问题描述 投票:0回答:1

假设我在 R 中有一个特定的字符串,比如“ABCDEFG”。我可以使用以下正则表达式将其分成每两个字符的序列。

 strsplit("ABCDEFG", "(?<=(..))", perl = TRUE)
[[1]]
[1] "AB" "CD" "EF" "G" 

但我想把它分成一个特定的序列。前两个字符,然后是下一个字符,然后是两个字符,然后是一个字符,依此类推。

如果我的输入字符串是“ABCDEFG”,我想要“AB”“C”“DE”“F”“G”作为输出(在最后一个元素中只剩下一个元素)。

我该怎么办呢。我不想提前数

nchar
,因为我想动态地进行计算。

r regex split tidyr stringr
1个回答
0
投票

您可以使用矢量化

substr
函数:

vsubstr <- Vectorize(substr)

x <- "ABCDEFG"

pat <- rep(c(1,2), length.out=1 + ceiling(nchar(x)/2))
start <- cumsum(pat)
stop <- start + rep(c(1,0), length.out=1 + ceiling(nchar(x)/2))

vsubstr(x, start, stop)

ABCDEFG    <NA>    <NA>    <NA>    <NA> 
   "AB"     "C"    "DE"     "F"     "G"


x <- "ABCDEFGH"
vsubstr(x, start, stop)

ABCDEFGH     <NA>     <NA>     <NA>     <NA> 
    "AB"      "C"     "DE"      "F"     "GH"

我承认不太优雅。

© www.soinside.com 2019 - 2024. All rights reserved.