J'essaie de joindre deux tables.table à l'aide d'une jointure interne. Il est possible qu'aucune correspondance ne puisse être trouvée, alors je veux un data.table vide avec les bons noms de col.La jointure interne data.table génère une erreur lorsqu'aucune correspondance n'est trouvée
dt1 <- data.table(A = c(1,2), B = c(1,2))
dt2 <- data.table(A = c(3,4), D = c(3,4))
setkey(dt1, A)
setkey(dt2, A)
dt1[dt2, nomatch = 0]
Error in xj[i] : invalid subscript type 'list'
merge(dt1, dt2,
all.x = F,
all.y = F)
Empty data.table (0 rows) of 3 cols: A,B,D
La deuxième méthode me donne la réponse désirée. Mais je préfère la première syntaxe car elle est plus rapide. Est-ce que quelqu'un sait comment je pourrais résoudre cette erreur, sans utiliser une instruction trycatch.
Dans les versions récentes de data.table, vous n'avez pas besoin d'utiliser 'setkey', de sorte que vous pouvez réduire ce à une seule ligne de code: 'dt1 [dt2, on =" A ", nomatch = 0]'. Lisez la section sur l'indexation automatique sur la page [data.table] (https://github.com/Rdatatable/data.table/wiki/Getting-started) pour plus d'informations. – lmo