Я немного опоздал на вечеринку, но я не удержался и опубликовал еще пару способов сделать это. Оба используют возможности R для работы с интервалами на реальной линии.
Если вы определяете свои точки среза и значения функций в векторах cuts
и vals
следующим образом:
cuts <- c( -Inf, -1.793, -1.304, -0.326, 0.625, 1.630, 2.119 )
vals <- c( 0, 0.454, 0, 0.632, 0, 0.227, 0 )
Затем вы можете использовать findInterval
для эффективного поиска значений x
в ваших точках отсчета:
fx <- vals[findInterval(x, c(-Inf, cuts))]
Если этой функции нужно было заняться чем-то более сложным, чем просто искать постоянное значение, вы можете поместить выражения или функции или что угодно в vals
, возможно, используя list
, если хотите.
В качестве альтернативы, поскольку эта функция является пошаговой, вы можете использовать stepfun
:
f <- stepfun(cuts[-1], vals)
fx <- f(x)
Тогда вы также можете использовать хорошие методы построения графиков stepfun
.