1

假设我有一个长度向量,n我需要生成所有可能的组合及其总和。例如:

如果n=3,我们有:

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

Output = 
"a"
"b"
"c"
"a+b"
"a+c"
"b+c"
"a+b+c"

注意我们考虑到a+b = b+a,所以只需要保留一个。

另一个例子,如果n=4

myVec <- c("a", "b", "c", "d")

Output:
"a"
"b"
"c"
"d"
"a+b"
"a+c"
"a+d"
"b+c"
"b+d"
"c+d"
"a+b+c"
"a+c+d"
"b+c+d"
"a+b+c+d"
4

1 回答 1

3

我们可以使用sapply不同的长度,combnpaste作为函数来应用。

sapply(seq_along(myVec), function(n) combn(myVec, n, paste, collapse = "+"))

#[[1]]
#[1] "a" "b" "c"

#[[2]]
#[1] "a+b" "a+c" "b+c"

#[[3]]
#[1] "a+b+c"


myVec <- c("a", "b", "c", "d")
sapply(seq_along(myVec), function(n) combn(myVec, n, paste, collapse = "+"))

#[[1]]
#[1] "a" "b" "c" "d"

#[[2]]
#[1] "a+b" "a+c" "a+d" "b+c" "b+d" "c+d"

#[[3]]
#[1] "a+b+c" "a+b+d" "a+c+d" "b+c+d"

#[[4]]
#[1] "a+b+c+d"

unlist如果我们需要输出为单个向量,我们可以。

于 2019-10-10T01:53:03.757 回答