我有两个数字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)
.
.
.
答案 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
。