R: объединение списков фреймов данных на нескольких ключах
Я пытаюсь одновременно объединить несколько фреймов данных в r, объединяя их в списки и используя mapply и merge. Это прекрасно работает при слиянии с одним ключом, но не при слиянии с несколькими ключами, используя аргумент 'by = c("a","b") "в слиянии.
Mapply, по-видимому, обрабатывает аргумент by как третий список для циклического прохождения, а не пропускает весь аргумент каждый раз.
Например, этот код:
df <- data.frame(a = rep(1:3, 3),
b = c(rep("aa",3), rep("bb",3), rep("cc",3)),
c = rnorm(9, mean = 5))
df2 <- df1 <- df
list1 <- list(df, df1, df2)
df3 <- data.frame(a = rep(3:1, 3),
b = c(rep("cc",3), rep("bb",3), rep("aa",3)),
c = rnorm(9, mean = -5))
df5 <- df4 <- df3
list2 <- list(df3, df4, df5)
list3 <- mapply(merge, list1, list2, SIMPLIFY = FALSE, by = c("a","b"))
возвращает предупреждающее сообщение "более длинный аргумент, не кратный длине более короткого". Но когда я добавляю третий термин 'by = c("a","b","c") ", он пытается объединить первый кадр данных с помощью" a ", второй с помощью" b "и третий с помощью" с". Однако я хочу объединить их как a, так и b. Кто-нибудь знает, как я могу это сделать?