Skip to content

Commit c732703

Browse files
committed
feat(3611): added message and doc int64 column creation in fread
1 parent ce97148 commit c732703

2 files changed

Lines changed: 20 additions & 2 deletions

File tree

R/fread.R

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ showProgress=getOption("datatable.showProgress",interactive()), data.table=getOp
77
nThread=getDTthreads(verbose), logical01=getOption("datatable.logical01",FALSE),
88
logicalYN=getOption("datatable.logicalYN", FALSE),
99
keepLeadingZeros=getOption("datatable.keepLeadingZeros",FALSE),
10-
yaml=FALSE, tmpdir=tempdir(), tz="UTC")
10+
yaml=FALSE, tmpdir=tempdir(), tz="UTC",
11+
no.integer64.message=getOption("datatable.integer64.message", FALSE))
1112
{
1213
if (missing(input)+is.null(file)+is.null(text)+is.null(cmd) < 3L) stopf("Used more than one of the arguments input=, file=, text= and cmd=.")
1314
input_has_vars = length(all.vars(substitute(input)))>0L # see news for v1.11.6
@@ -261,13 +262,26 @@ yaml=FALSE, tmpdir=tempdir(), tz="UTC")
261262
if (identical(tt,"") || is_utc(tt)) # empty TZ env variable ("") means UTC in C library, unlike R; _unset_ TZ means local
262263
tz="UTC"
263264
}
265+
264266
ans = .Call(CfreadR,input,identical(input,file),sep,dec,quote,header,nrows,skip,na.strings,strip.white,blank.lines.skip,comment.char,
265267
fill,showProgress,nThread,verbose,warnings2errors,logical01,logicalYN,select,drop,colClasses,integer64,encoding,keepLeadingZeros,tz=="UTC")
266268
if (!length(ans)) return(null.data.table()) # test 1743.308 drops all columns
267269
nr = length(ans[[1L]])
268270
require_bit64_if_needed(ans)
269271
setattr(ans,"row.names",.set_row_names(nr))
270272

273+
# integer64 message on create - instead of warning
274+
if (!isTRUE(no.integer64.message) &&
275+
identical(integer64, "integer64") &&
276+
any(vapply(ans, function(x) inherits(x, "integer64"), logical(1L)))) {
277+
message(
278+
"fread: Creating one or more integer64 columns.
279+
See ?fread and ?bit64::integer64.
280+
To suppress this message, use no.integer64.message=TRUE.
281+
To avoid integer64 columns, use options(datatable.integer64='numeric')."
282+
)
283+
}
284+
271285
if (isTRUE(data.table)) {
272286
setattr(ans, "class", c("data.table", "data.frame"))
273287
setalloccol(ans)

man/fread.Rd

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,11 @@ nThread=getDTthreads(verbose),
2525
logical01=getOption("datatable.logical01", FALSE),
2626
logicalYN=getOption("datatable.logicalYN", FALSE),
2727
keepLeadingZeros = getOption("datatable.keepLeadingZeros", FALSE),
28-
yaml=FALSE, tmpdir=tempdir(), tz="UTC"
28+
yaml=FALSE, tmpdir=tempdir(), tz="UTC",
29+
no.integer64.message=getOption("datatable.integer64.message", FALSE)
30+
\item{no.integer64.message}{ Logical. If FALSE (default), fread will print a message when creating one or more integer64 columns, warning that this type is not fully supported in base R (e.g., as.matrix() will not work as expected). To suppress the message, set this argument to TRUE or use \code{options(datatable.integer64.message=TRUE)}. To avoid integer64 columns entirely, use \code{options(datatable.integer64='numeric')}. }
31+
\bold{integer64 columns:}
32+
If fread creates integer64 columns, it prints a message by default to inform the user.
2933
)
3034
}
3135
\arguments{

0 commit comments

Comments
 (0)