如何在 R 中生成向量的所有可能的连续 n 元组?
# Input
x <- c('a', 'b', 'c', 'b')
n = 2
# Output
list(c('a', 'b'), c('b', 'c'), c('c', 'b')) # a list equal to this list
最佳答案
我们可以删除第一个和最后一个元素,并通过使用 Map
遍历相应的元素来连接起来
Map(c, x[-length(x)], x[-1])
$a
[1] "a" "b"
$b
[1] "b" "c"
$c
[1] "c" "b"
或者cbind
到一个matrix
并用asplit
按行拆分
asplit(cbind(x[-length(x)], x[-1]), 1)
[[1]]
[1] "a" "b"
[[2]]
[1] "b" "c"
[[3]]
[1] "c" "b"
如果 n
值可以大于 2,我们也可以使用 shift
library(data.table)
Filter(\(x) all(complete.cases(x)),
data.table::transpose(shift(x, seq_len(n)-1, type = 'lead')))
[[1]]
[1] "a" "b"
[[2]]
[1] "b" "c"
[[3]]
[1] "c" "b"
https://stackoverflow.com/questions/73262544/