假设我有一个向量:
vec.test <- c(-1.2, -1, -0.9, -0.5, 0, 0.5, 0.9 , 1, 1.2)
我想把它装进下面的箱子里:( - 2,-1],(-1,1),[1,2]
是否有比以下更优雅/自动的方式?
cut(vec.test, c(-2, -1+.Machine$double.eps, 1-.Machine$double.eps, 2), right=TRUE)
答案 0 :(得分:1)
如果您不关心标签,可以这样做:
vec.test <- seq(-2, 2, by=0.5)
names(vec.test) <- cut(abs(vec.test), c(-1, 1, 2), right=FALSE, labels=FALSE) *
(-1)^(vec.test <= -1 )
#<NA> -2 -2 1 1 1 2 2 <NA>
#-2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0