将字符串拆分为给定长度的子字符串,其余为余数

grd*_*rdn 6 string substring r string-split

给出如下字符串:

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

我想将字符串切成子串,例如长度为10,并保留余数:

"abcdefghij"
"klmnopqrst"
"uvwxyz"
Run Code Online (Sandbox Code Playgroud)

我知道用于创建子字符串的所有方法都不会给我带有6个字符的余数子字符串.我尝试过以前类似问题的答案,例如:

> substring(text, seq(1, nchar(text), 10), seq(10, nchar(text), 10))
[1] "abcdefghij" "klmnopqrst" ""  
Run Code Online (Sandbox Code Playgroud)

关于如何获得所需长度和任何剩余字符串的所有子串的任何建议都将非常感激.

akr*_*run 10

尝试

strsplit(text, '(?<=.{10})', perl=TRUE)[[1]]
#[1] "abcdefghij" "klmnopqrst" "uvwxyz" 
Run Code Online (Sandbox Code Playgroud)

或者您可以使用library(stringi)更快的方法

library(stringi)
stri_extract_all_regex(text, '.{1,10}')[[1]]
#[1] "abcdefghij" "klmnopqrst" "uvwxyz"    
Run Code Online (Sandbox Code Playgroud)


Ric*_*ven 8

用于firstlast参数的向量substring可以超出字符串中的字符数,而不会出现错误/警告/问题.所以你可以做到

text <- "abcdefghijklmnopqrstuvwxyz"

sq <- seq.int(to = nchar(text), by = 10)
substring(text, sq, sq + 9)
# [1] "abcdefghij" "klmnopqrst" "uvwxyz"   
Run Code Online (Sandbox Code Playgroud)