2017-06-08 16 views
0

長さkのすべての順序付けられた組み合わせを生成するRコマンドは何ですか?このベクトルから例えば順序付き組み合わせを生成する機能

a,b,c,d 

それは長さ3のすべての組み合わせが、順序が保存されているものだけのものを生成します:

a,b,c 
a,b,d 
a,c,d 
b,c,d 

または私はこのベクトルを持っている場合を

a,b,7,d,e 

私は長さ2について同じことをしたいです:

それはあなたのように
Cのような逆転も含め、すべての可能な組み合わせを与えるので
a,b 
a,7 
a,d 
a,e 
b,7 
b,d 
b,e 
7,d 
7,e 
d,e 

combnは私がexpand.gridでそれを行うために試みることができる、簡単な例で
B、ここでは動作しませんが、両方の方法は、さらに必要になります処理。
おそらく、私が望むやり方をしたり、より複雑な条件を受け入れることができる基本機能(またはパッケージ)があります。

PD:私が「順序付けられた」と言うとき、私は開始ベクトルの出現順序について話しています。私は印刷の順序を意味するものではありませんが、私の例では同じです。

+2

私が行う場合は ' combn(x、3、FUN = toString) 'x < - letters [1:4]' – Sotos

+0

のような出力が得られます。このhttps://stackoverflow.com/questions/21984830/creating-new-ids-two-way-from-two-vectorsはあなたの質問に興味があります。 – nadizan

答えて

1

あなたは基本Rにcombnを使用することができます。長さ3

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" 

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" 

OR

@Sotosはコメントで指摘したように:

combn(vec, len) 
+3

'combn(vec、2)'は全く同じ出力を返します – Sotos

関連する問題