2016-03-28 26 views
-2

私は要素{1,2,3,4,5}のリストを持っており、各要素のすべての組み合わせ{1,2,3,4,5、 12,13,14,15,23,24,25,34,35など} R これにはinbuilt関数がありますか?各要素の組み合わせを見つける

+2

あなたが 探している関数は' combn(ある):

range_combn <- function(x, m){ unlist(lapply(m, function(m) apply(combn(x, m), 2, function(x) as.numeric(paste0(as.character(x), collapse=""))))) } 

例:ここでは

はそれをしない機能です –

答えて

0

あなたはこの試みることができる:パフォーマンスの問題は、この短いバージョンは、おそらくそれ以来、遅くなりたい場合

v <- sort(as.numeric(apply(expand.grid(0:5,1:5), 1, paste, collapse=""))) 
v <- v[!!v%%11] 

:同じコードがもう少しコンパクトに書くことができ

g1 <- expand.grid(0:5,1:5) #create a data.frame with all combinations 
v <- as.numeric(paste0(g1[,1], g1[,2])) #convert combinations into numbers 
v <- sort(v[(v%%11)!=0]) #sort and remove duplicate figures, like 44 or 55 
v 
#[1] 1 2 3 4 5 12 13 14 15 21 23 24 25 31 32 34 35 41 42 43 45 51 52 53 54 

apply()のループを使用し、最初のバージョンは完全にベクトル化されます。

0

これはあなたが探しているものですか?

unlist(lapply(1:2, function(m) apply(combn(1:5, m), 2, function(x) as.numeric(paste0(as.character(x), collapse=""))))) 
[1] 1 2 3 4 5 12 13 14 15 23 24 25 34 35 45 

1:2?combnでもm)を選択する要素の数の範囲であり、そして組み合わせ(combnx)の1:5ベクトル源。 `

range_combn(1:5, 1:3) 
[1] 1 2 3 4 5 12 13 14 15 23 24 25 34 35 45 123 124 125 134 135 145 234 235 245 345 

range_combn(1:5, 1:2) 
[1] 1 2 3 4 5 12 13 14 15 23 24 25 34 35 45 
関連する問題