Я пытаюсь объединить (объединить) несколько таблиц данных (полученных с помощью fread из 5 файлов csv), чтобы сформировать единую таблицу данных. Я получаю сообщение об ошибке при попытке объединить 5 таблиц данных, но отлично работает, когда я объединяю только 4. MWE ниже:
# example data
DT1 <- data.table(x = letters[1:6], y = 10:15)
DT2 <- data.table(x = letters[1:6], y = 11:16)
DT3 <- data.table(x = letters[1:6], y = 12:17)
DT4 <- data.table(x = letters[1:6], y = 13:18)
DT5 <- data.table(x = letters[1:6], y = 14:19)
# this gives an error
Reduce(function(...) merge(..., all = TRUE, by = "x"), list(DT1, DT2, DT3, DT4, DT5))
Ошибка в файле merge.data.table(..., all = TRUE, by = "x" ): x имеет некоторые дублированное имя столбца: y.x, y.y. Удалите или переименуйте повторите попытку и повторите попытку.
# whereas this works fine
Reduce(function(...) merge(..., all = TRUE, by = "x"), list(DT1, DT2, DT3, DT4))
x y.x y.y y.x y.y
1: a 10 11 12 13
2: b 11 12 13 14
3: c 12 13 14 15
4: d 13 14 15 16
5: e 14 15 16 17
6: f 15 16 17 18
У меня есть обходное решение, где, если я изменяю имя второго столбца для DT1:
setnames(DT1, "y", "new_y")
# this works now
Reduce(function(...) merge(..., all = TRUE, by = "x"), list(DT1, DT2, DT3, DT4, DT5))
Почему это происходит, и есть ли способ слить произвольное количество таблиц данных с одинаковыми именами столбцов без изменения имени столбца?