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