以一种有效的方式将一个字符串拆分成R中大小为n的连续子串

vc9ivgsu  于 2023-09-27  发布在  其他
关注(0)|答案(2)|浏览(73)
# Input
n <- 2
"abcd" 
# Output
c("ab", "bc", "cd")

我不想使用for循环或sapply

m528fe3b

m528fe3b1#

您可以使用substring-

get_n_grams <- function(string, n) {
  len <- nchar(string)
  substring(string, seq_len(len - n + 1), n:len)    
}

get_n_grams("abcd", 2)
#[1] "ab" "bc" "cd"

get_n_grams("abcd", 3)
#[1] "abc" "bcd"
piah890a

piah890a2#

这个embed技巧可以工作,但可能不如substring approach by @Ronak Shah有效

> n <- 2

> s <- "abcd"

> apply(embed(utf8ToInt(s), n)[, n:1], 1, intToUtf8)
[1] "ab" "bc" "cd"

相关问题