Возможно ли для предложения on
объединения data.table
поддержка более сложных выражений, чем (в) равенствах? Например, если я попытаюсь выполнить
B[A,on=.(name = toupper(name))]
или
B[A,on=.(year = year(date))]
Я получаю сообщение об ошибке
Ошибка в [.data.table
(B, A, on =. (Name = toupper (name))):
Столбец (ы) [toupper (имя)] не найден в i
data.table
, кажется, ищет столбец, имя которого является неоцененным выражением, а не оценивает выражение. Замена name = toupper(name)
чем-то вроде name = eval(quote(toupper(name)))
, похоже, тоже не помогает.
Я всегда могу обойти это, добавив дополнительный столбец к одному или обоим входам (в данном случае name_upper := toupper(name)
), а затем удалив ненужный столбец после объединения, но это неуклюже и громоздко.
Можно ли добиться аналога функциональности объединения SQL здесь?