Skip to content

Commit 697316c

Browse files
implementation for special on= warning
1 parent 495ffd4 commit 697316c

1 file changed

Lines changed: 27 additions & 5 deletions

File tree

R/merge.R

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -133,15 +133,37 @@ merge.data.table = function(x, y, by = NULL, by.x = NULL, by.y = NULL, all = FAL
133133
n_dots)
134134
} else {
135135
named_idx = nzchar(nm)
136+
has_on <- "on" %chin% nm
136137
if (all(named_idx)) {
137-
warningf(ngettext(n_dots, "merge.data.table() received %d unknown keyword argument which will be ignored: %s",
138-
"merge.data.table() received %d unknown keyword arguments which will be ignored: %s"),
139-
n_dots, brackify(nm))
138+
if (has_on) {
139+
if (n_dots == 1L) {
140+
warningf("Use by=, not on=, in merge.data.table().")
141+
} else {
142+
warningf(ngettext(n_dots - 1L, "Use by=, not on=, in merge.data.table(). Also received %d other unknown keyword argument which will be ignored: %s",
143+
"Use by=, not on=, in merge.data.table(). Also received %d other unknown keyword arguments which will be ignored: %s"),
144+
n_dots - 1L, brackify(nm))
145+
}
146+
} else {
147+
warningf(ngettext(n_dots, "merge.data.table() received %d unknown keyword argument which will be ignored: %s",
148+
"merge.data.table() received %d unknown keyword arguments which will be ignored: %s"),
149+
n_dots, brackify(nm))
150+
}
140151
} else {
141152
n_named <- sum(named_idx)
142153
unnamed_clause <- sprintf(ngettext(n_dots - n_named, "%d unnamed argument in '...'", "%d unnamed arguments in '...'"), n_dots - n_named)
143-
named_clause <- sprintf(ngettext(n_named, "%d unknown keyword argument", "%d unknown keyword arguments"), n_named)
144-
warningf("merge.data.table() received %s and %s, all of which will be ignored: %s", unnamed_clause, named_clause, brackify(nm[named_idx]))
154+
if (has_on) {
155+
if (n_named == 1L) {
156+
warningf(ngettext(n_named - 1L, "Use by=, not on=, in merge.data.table(). Also received %d unknown argument which will be ignored.",
157+
"Use by=, not on=, in merge.data.table(). Also received %d unknown arguments which will be ignored."),
158+
n_named - 1L)
159+
} else {
160+
named_clause <- sprintf(ngettext(n_named, "%d unknown keyword argument", "%d unknown keyword arguments"), n_named - 1L)
161+
warningf("Use by=, not on=, in merge.data.table(). Also received %s and %s, all of which will be ignored: %s", unnamed_clause, named_clause, brackify(setdiff(nm[named_idx], "on")))
162+
}
163+
} else {
164+
named_clause <- sprintf(ngettext(n_named, "%d unknown keyword argument", "%d unknown keyword arguments"), n_named)
165+
warningf("merge.data.table() received %s and %s, all of which will be ignored: %s", unnamed_clause, named_clause, brackify(nm[named_idx]))
166+
}
145167
}
146168
}
147169
}

0 commit comments

Comments
 (0)