Если вы посмотрите на исходный код функции fwrite (), она передает значения ваших значений прямо во внутреннюю функцию C:
> fwrite
function (x, file = "", append = FALSE, quote = "auto", sep = ",",
sep2 = c("", "|", ""), eol = if (.Platform$OS.type == "windows") "\r\n" else "\n",
na = "", dec = ".", row.names = FALSE, col.names = TRUE,
qmethod = c("double", "escape"), logicalAsInt = FALSE, dateTimeAs = c("ISO",
"squash", "epoch", "write.csv"), buffMB = 8, nThread = getDTthreads(),
showProgress = getOption("datatable.showProgress"), verbose = getOption("datatable.verbose"))
{
...
.Call(Cwritefile, x, file, sep, sep2, eol, na, dec, quote,
qmethod == "escape", append, row.names, col.names, logicalAsInt,
dateTimeAs, buffMB, nThread, showProgress, verbose)
invisible()
}
Если вы посмотрите на исходный код вызываемой функции:
https://github.com/Rdatatable/data.table/blob/master/src/fwrite.c
вы заметите, что они не проверяют какую-либо среду, установленную в R, и используют значимые обозначения для достаточно больших значений.
Можно изменить этот источник так, как вам нравится, создать собственную динамическую библиотеку и вызвать ее из R.
Другой вариант - использовать некоторые стандартные функции записи R (хотя я подозреваю, что вам нравится производительность data.table функций пакета).