Merge() de numeric et character

Imaginons que vous ayez deux data frame, DF1 et DF2, que l'un et l'autre possèdent une variable Var mais que dans le premier data set cette variable soit de type numeric et dans l'autre de type character. Vous souhaitez faire un merge de ces deux data frame et la variable Var fait partir de la clé de jointure, soit explicitement par une spécification by, soit implicitement parce que la variable est commune aux deux data frame. Que va t-il se passer ?

Une bonne nouvelle et des mauvaises nouvelles. La bonne nouvelle c'est que la jointure va se faire : apparemment, merge effectue une transformation de type. Mauvaises nouvelles :
 * merge ne signale pas qu'il y a deux types différents pour la même variable et qu'il va faire une transformation de type ;
 * la transformation de type peut aboutir a des résultats indésirables, comme par exemple (non contractuel) 2000000 en numeric transformé en "2e+06" en character qui sera toujours différent de la chaîne de caractère "2000000" ;
 * le problème précédent induit que le cas échéant des lignes qui auraient dû être jointes ne le sont pas, ce qui peut se détecter en considérant les nombre lignes des deux fichiers joints et du résultat de l'opération mais ... R est aussi muet sur ce point que sur la transformation implicite de type.

Qu'alors y faire ? Je m'en suis tiré en faisant une transformation de variable explicitement avant d'effectuer mon merge, dans le sens character => numeric. On peut aussi imaginer faire une version custom de merge qui tout à la fois testerais les différences de type des variables de la clé de jointure et signalerait les nombre de lignes des trois data frame.