2016-10-05 7 views
3

私は、ブレークが変更されるたくさんのマップを生成しています。私は同じ間隔が必要ですが、最高の数字は地図から地図に変わります。私は複数のifと行くことができましたが、より良い方法が必要でしょうか?このことから番号の大きい順番が変わっている不均一なシーケンス

maxvalues <- c(453, 25) 
breaks <- c(0,1,2,5,10,20,50,100,200) 

私は

0,1,2,5,10,20,50,100,200, 453 
0,1,2,5,10,25 

任意のアイデアを取得したいと思いますか?

答えて

2

私たちは、「maxvalues」ループスルー、それよりも小さい「休憩」の要素を取得し、「X」で連結し、そしてbreaksがソートされていることを考えるとunlist

unlist(lapply(maxvalues,function(x) c(breaks[breaks< x], x))) 
#[1] 0 1 2 5 10 20 50 100 200 453 0 1 2 5 10 20 25 
+0

ありがとう、魅力のように動作します。まだすべての応募の周りに私の頭を取得しようとしています。 –

+0

@JeppeOlsen 'maxvalues'はベクトルです。 'lapply'を使うことで、' list'でそのベクトルの各要素をループし、ブール式( 'breaks akrun

0

することができます私はあなたの定義した最大値よりも小さい数字を見つけることができるので、findIntervalがあなたの問題によく合っていると思います。ここに行く方法です:

sapply(maxvalues, function(x) c(breaks[1:findInterval(x, breaks)], x)) 

#[[1]] 
# [1] 0 1 2 5 10 20 50 100 200 453 

#[[2]] 
#[1] 0 1 2 5 10 20 25