我有一个有趣的(也许只对我而言,:))问题。我有这样的文字:
"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"
哪里
substring
从 x
中提取子串在指定位置开始和结束。我们利用了 substring
的事实被矢量化并通过 1:(nchar(x) - n + 1)
作为起始位置和 n:nchar(x)
作为结束位置。
关于r - 找出所有可能的长度为 n 的子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35561641/