2017-05-01 6 views
1

私は、長さnの列から長さkのすべての線形部分配列のリストを得ることができるR関数またはコードを探しています。ここでk-線形部分列は配列a> 0かつb> = 0の形X(ai + b)の形をとる。のは、(シーケンス内の番号iの位置は括弧内に与えられている)、このシーケンスが与えられると仮定する:すべての線形部分列を見つける方法R

5(1)3(2)、8(3)9(4)2(5)

したがって、 n = 5であり、すべての3線形部分列(k = 3)に興味があります。従って私は私のR関数結果の結果として取得したい

5(1)3(2)、8(3)

3(2)、8(3)9(4)

8(3)9(4)2(5)

5(1)、8(3)2(5)

残念ながら、私はここで開始するか分かりません。したがって、どんな助けも高く評価されます。事前に多くの感謝!

答えて

4

仮定する:

​​

1)次に、この試す:

filter_linear <- function(x) if (sd(diff(x)) == 0) x else NA 
na.omit(t(combn(n, k, filter_linear))) 

(1、2、3)、(1、3、5)を与えるなどの行としての出力行列:

 [,1] [,2] [,3] 
[1,] 1 2 3 
[2,] 1 3 5 
[3,] 2 3 4 
[4,] 3 4 5 
attr(,"na.action") 
[1] 2 3 4 6 8 9 
attr(,"class") 
[1] "omit" 

2)変化WOことULD:出力data.frameの列で結果を与える

is_linear <- function(x) sd(diff(x)) == 0 
Filter(is_linear, as.data.frame(combn(n, k))) 

V1 V5 V7 V10 
1 1 1 2 3 
2 2 3 3 4 
3 3 5 4 5 
+0

あなたはダ爆弾です。どうもありがとう! – Anti

関連する問題