首页 > 解决方案 > 如何在R中创建字符串的重叠段列表?

问题描述

对于像 'ABCDEFG' 这样的字符串,是否可以拆分为不同长度的重叠段列表?例如,有 2 个字母:'AB'、'BC'、'CD'、'DE'、'EF'、'FG'。带有 3 个字母:'ABC'、'BCD'、'CDE'、'DEF'、'EFG' 等等。这些段应该是一个字母的移位,而不是简单的拆分。

非常感谢。

标签: rstringsplitsegment

解决方案


我不是那么好,我不知道这是否是你搜索的内容,但我认为它可能会使用包 stringr 来解决问题。

string <- "ABCDEF"
library(stringr)

combinated_letters <- function(string, n) {
  length_ <- str_length(string)
  str_sub(string, seq(1, length_ + 1 - n), seq(n, length_))
}

combinated_letters(string, 1)
combinated_letters(string, 2)
combinated_letters(string, 3)
combinated_letters(string, 4)
combinated_letters(string, 5)
combinated_letters(string, 6)

结果:

> combinated_letters(string, 1)
[1] "A" "B" "C" "D" "E" "F"
> combinated_letters(string, 2)
[1] "AB" "BC" "CD" "DE" "EF"
> combinated_letters(string, 3)
[1] "ABC" "BCD" "CDE" "DEF"
> combinated_letters(string, 4)
[1] "ABCD" "BCDE" "CDEF"
> combinated_letters(string, 5)
[1] "ABCDE" "BCDEF"
> combinated_letters(string, 6)
[1] "ABCDEF"

推荐阅读