r - 找出所有可能的长度为 n 的子串

标签 r

我有一个有趣的(也许只对我而言,:))问题。我有这样的文字:

"abbba"

问题是在这个字符串中找到所有可能的长度为 n 的子字符串。例如,如果 n = 2 ,子串是
'ab','bb','ba'

如果 n = 3 ,子串是
'abb','bbb','bba'

我想使用这样的东西:
x <- 'abbba'
m <- matrix(strsplit(x, '')[[1]], nrow=2)
apply(m, 2, paste, collapse='')

但是我收到警告,它不适用于 len = 3。

最佳答案

我们可能会使用

x <- "abbba"
allsubstr <- function(x, n) unique(substring(x, 1:(nchar(x) - n + 1), n:nchar(x)))
allsubstr(x, 2)
# [1] "ab" "bb" "ba"
allsubstr(x, 3)
# [1] "abb" "bbb" "bba"

哪里substringx 中提取子串在指定位置开始和结束。我们利用了 substring 的事实被矢量化并通过 1:(nchar(x) - n + 1)作为起始位置和 n:nchar(x)作为结束位置。

关于r - 找出所有可能的长度为 n 的子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35561641/

相关文章:

r - R 包 dplyr 中的 head() 函数

r - x 轴上以可变条形宽度作为日期范围的条形图

string - 替换包含特定字符串的整个表达式

r - gmailR - 通过 R 发送多封带附件的电子邮件

r - 为什么 dcast 对我的 float 进行四舍五入?

sql - 名称为 “.”的表

r - 使用 `lm` 将 `purrr::map` 对象循环到 `broom::tidy`

R cmd 检查 latex 错误 : FATAL pdflatex - GUI framework cannot be initialized

r - R中find_replace nul字符

regex - R获取子字符串和正则表达式?