数字最大变化的不均匀序列

时间:2016-10-05 09:20:48

标签: r sequence

我正在生成很多地图,其中休息时间会发生变化。我想要相同的间隔,但最高的数字从地图变为地图。我可以使用多个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 个答案:

答案 0 :(得分:2)

我们可以遍历'maxvalues',获取小于它的'break'中的元素,与'x'连接,以及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

答案 1 :(得分:0)

鉴于breaks已排序,我认为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