read_excel усекает числа, несмотря на установку цифр

Я пытаюсь прочитать файл excel в R с помощью функции read_excel() из пакета «readxl». Числа в ячейках в файле Excel имеют 3 десятичных знака, например. 0,684 1,338 74,296. В кадре данных R те же числа 0,684 1,34 74,3. Почему осталось только 3 цифры?

Я установил options(digits=5) (также пробовал разные значения).

Я также попытался read_excel("file.xlsx", col_types = c("text", "text", "text")) (что дало мне строки: 74.296000000000006 1.3380000000000001 0.68400000000000005), а затем преобразовал в числа с as.numeric(), но опять числа были усечены: 0,684 1,34 74,3.

Пожалуйста, дайте мне знать, если вы знаете причину :)


person lynx123    schedule 09.08.2018    source источник
comment
Когда вы говорите в кадре данных R, как вы смотрите на свои данные? Я спрашиваю, потому что кажется, что R правильно читает ваши данные, но вам трудно увидеть, что они читаются правильно. Обратите внимание на разницу между print(pi) и print(pi, digits=15). В обоих случаях pi — это просто pi, но количество деталей, которые вы видите, различается.   -  person DanY    schedule 10.08.2018
comment
Я попытался. Неважно, print(df[1,1], digits=5) или print(df[1,1], digits=1), всегда 74,3   -  person lynx123    schedule 10.08.2018


Ответы (1)


Будьте осторожны, чтобы не перепутать «сколько цифр» и «сколько цифр показывает вам R». Трудно сказать наверняка, не видя вашего кода, но я подозреваю, что вы печатаете табличку, что-то вроде этого:

library(readxl)
my_junk <- read_excel("~/Downloads/test.xlsx")
print(my_junk)
#> # A tibble: 3 x 1
#>    test
#>   <dbl>
#> 1 0.684
#> 2 1.000
#> 3 1.00

Метод печати по умолчанию для табличек показывает только несколько значащих цифр. И, похоже, он не реагирует на настройку цифр в options. Однако, если мы преобразуем его в data.frame, вы увидите, что цифры были там все время:

library(dplyr)
my_junk %>%
  data.frame %>%
  print( digits = 7)  
#>       test
#> 1 0.684000
#> 2 0.999950
#> 3 1.000001

Так что ваши цифры, скорее всего, там, они просто не отображаются.

person JD Long    schedule 09.08.2018
comment
Преобразование в data.frame помогает. Мне также удалось правильно отобразить числа в таблице. Вместо установки опции «цифры» я установил options(pillar.sigfig = 5), и теперь таблички показывают 5 значащих цифр (3 по умолчанию). Спасибо за помощь :) - person lynx123; 10.08.2018