Возможно, проблема не в вашем исходном файле, поскольку вы говорите, что это также происходит с .csv и .txt.
Попробуйте проверить текущее значение параметра отображаемых цифр, набрав options()$digits
Если результат, например, 14 тогда это, вероятно, проблема.
В этом случае попробуйте выполнить команду r options(digits=8)
, которая установит цифры дисплея = 8 для сеанса.
Затем просто перепечатайте ваш фрейм данных, чтобы увидеть, что изменение уже вступило в силу в отношении того, как десятичные дроби отображаются по умолчанию на экране.
Обратитесь к ?options
за дополнительной информацией о настройке отображения цифр и других параметрах сеанса.
Изменить, чтобы улучшить оригинальный ответ и уточнить для будущих читателей:
- Изменение
options(digits=x)
вверх или вниз приводит к не изменению значения, которое сохраняется или считывается во внутреннюю память для переменных с плавающей запятой. Параметр сеанса digits
просто меняет способ отображения значений с плавающей запятой print , т. Е. Отображает на экране общие функции печати в соответствии с документацией «options»:
цифр: управляет количеством значащих цифр для печати при печати числовых значений.
- То, что ОП показало как проблему, с которой он столкнулся (R отображал больше десятичных знаков после последней цифры в десятичном числе, чем ожидалось увидеть ОП), не было вызвано тем, что исходный файл был прочитан из Excel - т.е. учитывая, что ОП имел та же проблема с CSV и TXT, процесс импорта не вызвал проблемы.
Если в распечатанном / отображаемом выводе вы видите больше десятичных чисел, чем вы хотите по умолчанию (например, для кадров данных и числовых переменных), попробуйте проверить options()$digits
и понять, что эта опция является просто значением по умолчанию для числа цифр, используемого в общем числе R методы отображения и печати. ОДНАКО, это не влияет на хранение с плавающей запятой ни на каких ваших данных или переменных.
Что касается чисел с плавающей запятой, другой ответ здесь показывает, как установка option(digits=n)
выше значения по умолчанию может помочь продемонстрировать некоторые особенности точности / отображения, связанные с точностью с плавающей запятой. Это отдельная проблема для того, что ОП показало в его примере, но это стоит понять.
Для более подробного и тематического обсуждения точности с плавающей запятой, чем было бы уместно перефразировать здесь, стоит прочитать этот окончательный вопрос SO + ответ: Почему эти числа не равны?
Этот другой вопрос + ответ + обсуждение посвящен вопросам, касающимся точности с плавающей запятой, и содержит длинный, хорошо представленный список ссылок, которые вы найдете полезными, если вам нужна дополнительная информация по этому вопросу.