You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: NEWS.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -44,6 +44,10 @@
44
44
45
45
12. Internal functions used to signal errors are now marked as non-returning, silencing a compiler warning about potentially unchecked allocation failure. Thanks to Prof. Brian D. Ripley for the report and @aitap for the fix, [#7070](https://github.com/Rdatatable/data.table/pull/7070).
46
46
47
+
13. In rare cases, `data.table` failed to expand ALTREP columns when assigning a full column by reference. This could result in the target column getting modified unintentionally if the next call to the data.table was a modification by reference of the source column. E.g. in `DT[, b := as.character(a)]` the string conversion gets deferred and subsequent modification of column `a` would also modify column `b`, [#5400](https://github.com/Rdatatable/data.table/issues/5400). Thanks to @aquasync for the report and Václav Tlapák for the PR.
48
+
49
+
14.`data.table()` function is now more aligned with `data.frame()` with respect to the names of the output when one of its inputs is a single-column matrix object, [#4124](https://github.com/Rdatatable/data.table/issues/4124). Thanks @PavoDive for the report and @jangorecki for the PR.
50
+
47
51
### NOTES
48
52
49
53
1. Continued work to remove non-API C functions, [#6180](https://github.com/Rdatatable/data.table/issues/6180). Thanks Ivan Krylov for the PRs and for writing a clear and concise guide about the R API: https://aitap.codeberg.page/R-api/.
stopf("External command failed with exit code %d. This can happen when the disk is full in the temporary directory ('%s'). See ?fread for the tmpdir argument.", status, tmpdir)
stopf("To read %s files directly, fread() requires 'R.utils' package which cannot be found. Please install 'R.utils' using 'install.packages('R.utils')'.", if (w<=2L||gzsig) "gz"else"bz2") # nocov
118
122
FUN=if (w<=2L||gzsig) gzfileelsebzfile
119
-
R.utils::decompressFile(file, decompFile<-tempfile(tmpdir=tmpdir), ext=NULL, FUN=FUN, remove=FALSE) # ext is not used by decompressFile when destname is supplied, but isn't optional
120
-
file=decompFile# don't use 'tmpFile' symbol again, as tmpFile might be the http://domain.org/file.csv.gz download
123
+
decompFile= tempfile(tmpdir=tmpdir)
121
124
on.exit(unlink(decompFile), add=TRUE)
125
+
tryCatch({
126
+
R.utils::decompressFile(file, decompFile, ext=NULL, FUN=FUN, remove=FALSE) # ext is not used by decompressFile when destname is supplied, but isn't optional
127
+
}, error=function(e) {
128
+
stopf("R.utils::decompressFile failed to decompress file '%s':\n %s\n. This can happen when the disk is full in the temporary directory ('%s'). See ?fread for the tmpdir argument.", file, conditionMessage(e), tmpdir)
129
+
})
130
+
file=decompFile# don't use 'tmpFile' symbol again, as tmpFile might be the http://domain.org/file.csv.gz download
122
131
}
123
132
file= enc2native(file) # CfreadR cannot handle UTF-8 if that is not the native encoding, see #3078.
if (length(rows)==0&&targetlen==vlen&& (vlen>0||nrow==0)) {
551
551
if ( MAYBE_SHARED(thisvalue) ||// set() protects the NAMED of atomic vectors from .Call setting arguments to 2 by wrapping with list
552
552
(TYPEOF(values)==VECSXP&&i>LENGTH(values)-1) ||// recycled RHS would have columns pointing to others, #185.
553
-
(TYPEOF(values)!=VECSXP&&i>0) // assigning the same values to a second column. Have to ensure a copy #2540
553
+
(TYPEOF(values)!=VECSXP&&i>0) ||// assigning the same values to a second column. Have to ensure a copy #2540
554
+
ALTREP(thisvalue) // Some ALTREP wrappers have survived to here, e.g. #5400
554
555
) {
555
556
if (verbose) {
556
-
Rprintf(_("RHS for item %d has been duplicated because MAYBE_REFERENCED==%d MAYBE_SHARED==%d, but then is being plonked. length(values)==%d; length(cols)==%d\n"),
Rprintf(_("RHS for item %d has been duplicated because MAYBE_REFERENCED==%d MAYBE_SHARED==%d ALTREP==%d, but then is being plonked. length(values)==%d; length(cols)==%d\n"),
DTWARN(_("Stopped early on line %"PRId64". Expected %d fields but found %d. Consider fill=%d or even more based on your knowledge of the input file. Use fill=Inf for reading the whole file for detecting the number of fields. First discarded non-empty line: <<%s>>"),
if (quoteRuleBumpedCh!=NULL&"eRuleBumpedCh<headPos) {
2780
-
DTWARN(_("Found and resolved improper quoting out-of-sample. First healed line %"PRId64": <<%s>>. If the fields are not quoted (e.g. field separator does not appear within any field), try quote=\"\" to avoid this warning."), quoteRuleBumpedLine, strlim(quoteRuleBumpedCh, 500));
2775
+
DTWARN(_("Found and resolved improper quoting out-of-sample. First healed line %"PRId64": <<%s>>. If the fields are not quoted (e.g. field separator does not appear within any field), try quote=\"\" to avoid this warning."), quoteRuleBumpedLine, strlim(quoteRuleBumpedCh, (char[500]) {}, 500));
0 commit comments