2014-10-29 100 views
0

我有兩個數字a = 1.2 & b = 0.9並且想要找出所有可能的組合以便在長度爲10的矢量中排列& b。必須有5個元素該矢量中的a和b的5個元素。我怎樣才能在R中寫這個?非常感謝!爲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) 
. 
. 
. 

回答

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。

+0

感謝您的快速響應,但有沒有辦法做到這一點,而無需安裝新的軟件包? – user3446735 2014-10-29 22:57:19

+1

除非你解釋爲什麼安裝軟件包會產生問題(爲什麼你還沒有提供有用的答案),我們大多數人會認爲你只是希望我們爲班級做作業(並且你不遵守SO的約定)。 – 2014-10-30 00:53:39

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效率較低。

相關問題