什么R命令生成长度为k的所有可能的有序组合?
例如,从这个载体:
a,b,c,d
它希望生成长度为3的所有组合,但只生成保存顺序的那些组合:
a,b,c
a,b,d
a,c,d
b,c,d
或者如果我有这个载体
a,b,7,d,e
我想对长度2做同样的事情:
a,b
a,7
a,d
a,e
b,7
b,d
b,e
7,d
7,e
d,e
梳子并不在这里工作,因为它为你提供了所有可能的组合,包括反向的组合,如答案 0 :(得分:1)
您可以在基础R中使用combn
:
vec <- c("a", "b", "c", "d")
len <- 2
combn(length(vec), len, function(x) vec[x])
# [,1] [,2] [,3] [,4] [,5] [,6]
#[1,] "a" "a" "a" "b" "b" "c"
#[2,] "b" "c" "d" "c" "d" "d"
长3
:
combn(length(vec), 3, function(x) vec[x])
# [,1] [,2] [,3] [,4]
#[1,] "a" "a" "a" "b"
#[2,] "b" "b" "c" "c"
#[3,] "c" "d" "d" "d"
或者@Sotos在评论中指出:
combn(vec, len)