Почему вычитание имеет другой результат, если вычислено из кадра данных?в R - PullRequest
0 голосов
/ 19 декабря 2018

Я проверял свои данные, и я понял, что вычитание было неправильным, и я вычислил его вручную, и я получил правильный результат.

Мой вопрос заключается в том, почему, когда я вычислял вычитание из data.frame, он дает число .5, а когда я вычислял его только по числам, он дает мне правильные результаты.

Я пыталсявоспроизвести проблему на другом компьютере, и вот игрушечный пример этой проблемы

a <- data.frame(matrix(nrow = 1, ncol = 4))
a[1,] <- c(101292229, 101298224, 101190466, 101195700)
colnames(a) <- c("start_I","end_I","start_II","end_II")

a$MI <- (a$start_I + a$end_I)/2
a$MII <- (a$start_II + a$end_II)/2

a

    start_I     end_I  start_II    end_II        MI       MII
1 101292229 101298224 101190466 101195700 101295226 101193083

a$MII-a$MI

[1] -102143.5

101193083-101295226

[1] -102143

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Как указал Люнгбакр, a$MI на самом деле 101295226.5, но выглядит только 101295226 из-за того, что настройки печати по умолчанию обрезают десятичное число.

Если вы переопределите эти настройки с помощью format(), вы увидите дополнительные .5:

format(a, digits = 10)
    start_I     end_I  start_II    end_II          MI       MII
1 101292229 101298224 101190466 101195700 101295226.5 101193083
0 голосов
/ 19 декабря 2018

Попробуйте

as.integer(a$MII-a$MI)

, чтобы получить ожидаемые результаты

...