TL; DR: используйте fmt(Value, 2)
вместо round(Value, 2)
. Это позволяет избежать проблем с научной нотацией c (и использовать округление от нуля). См. ?fmt
для получения более подробной информации.
Причина ошибки на самом деле не в функции round()
как таковой, а в том, что R по умолчанию использует scientifi c нотацию для чисел с определенным числом значащие цифры (фабрично-fre sh по умолчанию в R - scipen = 7
). Кроме того, пакет knitr
(используемый в фоновом режиме при проведении R / экзаменов) пытается красиво отформатировать эту научную нотацию c. Таким образом, вместо 12000.56
функция knit()
включает 1.200056 × 10<sup>4</sup>
в файле уценки. Это можно увидеть, когда вы запустите xweave("example.Rmd")
, а затем просмотрите получившийся файл example.md
. И затем при последующей обработке тега exsolution
возникают проблемы с преобразованием этого значения обратно в число, а значит, и предупреждение.
Чтобы избежать этого, вы можете увеличить предел scipen
в коде R упражнения Например, options(scipen = 999)
. Но это очень технично и утомительно. Это одна из причин, почему мы написали функцию fmt(...)
, которая выполняет различные вспомогательные задачи, связанные с форматированием чисел в упражнениях R / экзаменов.