为R中的两个元素生成所有可能的组合

时间:2014-10-29 22:43:47

标签: r

我有两个数字a = 1.2& b = 0.9并且想要找出所有可能的组合以在长度为10的向量中排列& b。在该向量中必须有5个元素的a和5个b元素。我怎么能用R写这个?非常感谢!

 ideal output would be a matrix to all combinations:
 1. (a,b,a,b,a,b,a,b,a,b)
 2. (a,a,a,a,a,b,b,b,b,b)
 .
 .
 . 

2 个答案:

答案 0 :(得分:2)

我想你可以做到:

x <- expand.grid(rep(list(c("a", "b")),10))
x <- x[rowSums(x == "a") == 5,]

head(x)
#   Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9 Var10
#32    b    b    b    b    b    a    a    a    a     a
#48    b    b    b    b    a    b    a    a    a     a
#56    b    b    b    a    b    b    a    a    a     a
#60    b    b    a    b    b    b    a    a    a     a
#62    b    a    b    b    b    b    a    a    a     a
#63    a    b    b    b    b    b    a    a    a     a

但它可能不如使用像combinat这样的特殊包。

答案 1 :(得分:1)

您想要使用包combinat。

例如:

> library(combinat)
> try1 = ("a", "a", "b")
> permn(try1)
[[1]]
[1] "a" "a" "b"

[[2]]
[1] "a" "b" "a"

[[3]]
[1] "b" "a" "a"

[[4]]
[1] "b" "a" "a"

[[5]]
[1] "a" "b" "a"

[[6]]
[1] "a" "a" "b"

然后您可以将其操作为矩阵。你的向量只包含5个和5个b