在0附近创建等间距的间隔

时间:2017-02-24 05:33:33

标签: r

我根据R中的输入值进行休息,然后根据这些值应用相等的间隔。

为此,我提供了一个输入向量:

for_break = c(-100, -90, -80, -50, 0, 3, 5, 20, 30, 40, 80)

然后我应用相等的间隔休息,总共使用5个间隔:

library(classInt)

breaks = classIntervals(for_break, n = 5, style = "equal", intervalClosure = "right")

我用以下内容返回休息时间:

breaks_num = breaks$brks

返回:

[1] -100  -64  -28    8   44   80

我希望以数字0为中心休息。

有没有办法提供输入向量并在正负两侧提供大约零的等间隔?

例如,如果我提供了这个输入向量:

c(-8, -6, -3, -2, 2, 4, 6, 9)

并指出我希望零的正负侧有相等的间距,每侧有3个间隔我会得到:

c(-8.000, -5.333, -2.666, 0.000, 3.000, 6.000, 9.000)

2 个答案:

答案 0 :(得分:2)

您可以使用此逻辑并从中创建一个函数。

x=c(-8, -6, -3, -2, 2, 4, 6, 9)
i=max(x)/3
j=min(x)/3
c(rev(seq(0, min(x), j)), seq(0, max(x), i)[-1])

答案 1 :(得分:1)

怎么样:

for_break = c(-100, -90, -80, -50, 0, 3, 5, 20, 30, 40, 80)

equalSpacing <- function( vector, per.side ) {
  negs <- seq.int( from = min( vector ), to = 0, length.out = per.side + 1L )
  pos <- seq.int( from = 0, to = max( vector ), length.out = per.side + 1L )
  return( c( negs, pos[ pos != 0 ] ) )
}

equalSpacing( for_break, 4 )