哪个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,ecombn在这里不起作用,因为它给出了所有可能的组合,包括相反的组合,例如
c,b
在简单的情况下,我可以尝试使用expand.grid,但这两种方法都需要进一步处理。
也许有一个基本函数(或包)可以做我想做的事情,甚至可以接受更复杂的条件。
PD:当我说“有序的”时,我指的是起始向量中出现的顺序。我不是指排版顺序,尽管在我的示例中它们是相同的。
发布于 2017-06-08 19:24:37
您可以在基数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)https://stackoverflow.com/questions/44434283
复制相似问题