@@ -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