Ответ 1
Это теперь исправлено в data.table v1.12.4. Функция fwrite
получает опцию scipen
. Цитата с сайта data.table github: https://github.com/Rdatatable/data.table/blob/master/NEWS.md
"Получает scipen # 2020, номер 1 наиболее востребованной функции # 3189. По умолчанию используется getOption("scipen")
, так что fwrite
теперь будет учитывать опцию R так же, как base::write.csv
и base::format
, как и ожидалось. Параметр и имя опции оставлено таким же, как и у базового scipen R для согласованности и для облегчения поиска в Интернете. Это означает "научный штраф", т.е. количество символов, добавляемых к ширине, в пределах которой используется ненаучный числовой формат, если он будет соответствовать. Высокий штраф по существу отключает научный формат. Мы считаем, что обычной практикой является использование значения 999, однако, если вы используете 999, потому что ваши данные могут содержать очень длинные числа, такие как 10 ^ 300, fwrite необходимо учитывайте наихудшую ширину поля в распределении буфера для потока. Это может повлиять на пространство или время. Если вы испытываете замедления или недопустимое использование памяти, передайте verbose = TRUE, чтобы написать, проверить вывод и сообщить о проблеме. пока мы не сможем определить лучшую стратегию, может быть передать меньшее значение scipen, например, 50. Мы заметили, что fwrite(DT, scipen=50)
, по-видимому, пишет 10 ^ 50 точно, в отличие от базы R. Однако это может быть счастливой случайностью и не применимо вообще. Дальнейшая работа может потребоваться в этой области ".