Я хотел бы скопировать мои данные и подумал использовать для этого пакет cut2
из Hmisc
.Однако, если я ввожу точно значение левой конечной точки, я не получаю желаемый диапазон, а только конечную точку:
> library(Hmisc)
> paste(cut2(seq(0,9,1),seq(0,10,1)))
[1] " 0" " 1" " 2" " 3" " 4" " 5" " 6" " 7" " 8" "[ 9,10]"
Ожидаемый результат, который я получаю, немного отключив значения (+1e-10
) из точных значений:
> paste(cut2(seq(0,9,1)+1e-10,seq(0,10,1)))
[1] "[ 0, 1)" "[ 1, 2)" "[ 2, 3)" "[ 3, 4)" "[ 4, 5)" "[ 5, 6)" "[ 6, 7)" "[ 7, 8)" "[ 8, 9)" "[ 9,10]"
Я использую относительно новую версию из пакета Hmisc
:
> packageVersion("Hmisc")
[1] ‘4.1.1’
Причина, по которой я хотел бы использовать cut2
вместоcut
заключается в том, что алфавитный порядок бинов, сгенерированных cut2
, соответствует числовому порядку бинов:
> sort(paste(cut2(seq(0,19,2)+1e-10,seq(0,20,2))))
[1] "[ 0, 2)" "[ 2, 4)" "[ 4, 6)" "[ 6, 8)" "[ 8,10)" "[10,12)" "[12,14)" "[14,16)" "[16,18)" "[18,20]"
> sort(paste(cut(seq(0,19,2),seq(0,20,2),include.lowest = TRUE)))
[1] "(10,12]" "(12,14]" "(14,16]" "(16,18]" "(2,4]" "(4,6]" "(6,8]" "(8,10]" "[0,2]" "[0,2]"
Является ли это поведение конечной точки cut2
функцией ошибки или ячто-то упустить?