我根据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)
答案 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 )