实际上,我已经解决了这个问题,但是我遇到了问题,因为解决方案有两个步骤,它们之间真正分开(第一步是在一个函数内部,第二步是在另一个内部;这意味着我将H作为输出)。
首先,可复制的例子:
RN = rnorm(n=1000,10,20)
H = cut2(RN,g=4,onlycuts=FALSE) # Step 1: The intervals are generated
H2= cut2(RN,g=4,onlycuts=TRUE) # Step 1: (This would be useful if Step 1 and 2 were not separated)
new_number = 10.53 # Step 2: New number
interval_new_number = cut2(new_number,cuts=H) # Step 2: Interval for new number
我想知道一个可以做到的解决方案:
new_number %in% H
给我你的意见。
答案 0 :(得分:1)
我(认为)该请求用于确定相对于用cut2构造的因子向量的新值的区间数。如果这是需要的,那么在每个因子级别的两个切口中的第一个的gsub构造上使用as.numeric:
H = cut2(RN,g=4,onlycuts=FALSE)
attributes(H)
#----
$class
[1] "factor"
$levels
[1] "[-66.7,-2.4)" "[ -2.4,10.3)" "[ 10.3,23.7)" "[ 23.7,75.9]"
findInterval( 10.53, as.numeric( gsub( "\\[|\\,.+$","", levels(H) ) ) )
[1] 3
我之前从未见过onlycuts
参数,但它会使代码更容易,因为不需要as.numeric( gsub(...))
次调用:
> (H2 = cut2(RN,g=4,onlycuts=TRUE) )
[1] -66.687208 -2.397688 10.334926 23.659386 75.887076
> findInterval( 10.53, H2 )
[1] 3