Извлечь все возможные подпоследовательности из вектора в R

Я хотел бы извлечь все возможные подпоследовательности из вектора длины n. Например, если у меня есть c(a,b,c), я хотел бы найти c(a,b,c,ab,ac,bc,abc,). Я могу решить это вручную с помощью вектора короткой длины, но проблема становится неразрешимой с большей длиной. Любая идея, как я могу сделать это, используя некоторую итерацию?


person Michael Boissonneault    schedule 20.06.2020    source источник


Ответы (1)


Использование combn.

x <- c("a","b","c")

unlist(sapply(1:length(x), function(i) combn(x, i, simplify=F)), recursive=F)
# [[1]]
# [1] "a"
# 
# [[2]]
# [1] "b"
# 
# [[3]]
# [1] "c"
# 
# [[4]]
# [1] "a" "b"
# 
# [[5]]
# [1] "a" "c"
# 
# [[6]]
# [1] "b" "c"
# 
# [[7]]
# [1] "a" "b" "c"

Or

unlist(sapply(1:length(x), function(i) combn(x, i, function(j) Reduce(paste0, j))))
# [1] "a"   "b"   "c"   "ab"  "ac"  "bc"  "abc"
person jay.sf    schedule 20.06.2020