Skip to content

Commit a8ff6e2

Browse files
only warn once about '...' contents
1 parent 3b00b35 commit a8ff6e2

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

R/merge.R

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,19 @@ merge.data.table = function(x, y, by = NULL, by.x = NULL, by.y = NULL, all = FAL
6363
}
6464

6565
# warn about unused arguments #2587
66-
if (length(list(...))) {
67-
ell = as.list(substitute(list(...)))[-1L]
68-
for (n in setdiff(names(ell), "")) warningf("Unknown argument '%s' has been passed.", n)
69-
unnamed_n = length(ell) - sum(nzchar(names(ell)))
70-
if (unnamed_n)
71-
warningf("Passed %d unknown and unnamed arguments.", unnamed_n)
66+
# TODO(R >= 3.5.0): use ...length()
67+
if (n_dots <- length(dots <- list(...))) {
68+
if (is.null(nm <- names(dots))) {
69+
warningf("%d unnamed arguments wound up in '...' and will be ignored.", n_dots)
70+
} else {
71+
named_idx <- nzchar(nm)
72+
if (all(named_idx)) {
73+
warningf("merge.data.table() received %d unknown keyword arguments which will be ignored: %s", n_dots, brackify(nm))
74+
} else {
75+
n_named <- sum(named_idx)
76+
warningf("merge.data.table() received %d unnamed arguments in '...' and %d unknown keyword arguments, all of which will be ignored: %s", n_dots - n_named, n_named, brackify(nm[named_idx]))
77+
}
78+
}
7279
}
7380
# with i. prefix in v1.9.3, this goes away. Left here for now ...
7481
## sidestep the auto-increment column number feature-leading-to-bug by

0 commit comments

Comments
 (0)