2017-11-24 12 views
0

時々、私たちの条件を満たす行だけでなく、隣接する行を比較したい、私は必要な行を取得したい、それより上のn行および/またはその下のn行。R希望の行とそのネイバーを簡単な方法で取得する方法はありますか?

、具体的条件は、私は3 は4,5,6,7行必要比較して1,2,3,4,5を行たい3,6,7

行与えると仮定し、 8 6 を比較した後、私は行1,2,3,4,5,6,7,8,9

を取得し、重複を排除7

を比較する5,6,7,8,9の行に

私は自分自身の機能を書いてこれを処理することができ、難しくないと知っていた。

多くの見積もりは行だけでなく隣の行を必要とするので、多くの見積もりには行の隣にパッケージフォーカスがあります

+0

あなたの出力は明らかではありません。ベクトルを行列またはdata.frameと比較すると、 'v1 < - c(3,6,7); m1 < - rbind(1:5、4:8、5:9); m1 == v1 ' – akrun

+0

ありがとう!私は答えを持っています、それはあなたに私が思っていることにもっと手がかりを与えるかもしれません – cloudscomputes

答えて

0

私は方法を見つけました(自分自身で関数を書く)が、誰かがこれを目的としたパッケージを知っている場合は教えてください

、2でこの値で中心ベクトルに数を拡張境界場合を考える、デフォルトで最初の行は1であり、我々はこの関数ベクトル化

getAdjacentNumV = Vectorize(getAdjacentNum,SIMPLIFY = FALSE) 
を終了

getAdjacentNum = function(x,lowerbound = 1,upperbound = x+2){ 
start = x - 2 
if (x - lowerbound == 1) 
    start = x - 1 
if (x == lowerbound) 
    start = x 
end = x + 2 
if (upperbound - x == 1) 
end = x + 1 
if (upperbound == x) 
    end = x 
result = seq(from = start,to = end,by = 1) 
return(result) 
} 

に到達しませんでした

は重複して結果を組み合わせて、対処

getAdjacentIndex = function(index){ 
    unique(unlist(getAdjacentNumV(index))) 
} 

例:

getAdjacentIndex(c(1,5,29)) 
[1] 1 2 3 4 5 6 7 27 28 29 30 31 
関連する問題