Неожиданное поведение функции cut2: отображение значения левой конечной точки вместо диапазона - PullRequest
0 голосов
/ 02 октября 2018

Я хотел бы скопировать мои данные и подумал использовать для этого пакет 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 функцией ошибки или ячто-то упустить?

...