Мне нужно объединить много data.frames.Ниже приведен пример кода для воспроизведения ошибки.Это похоже на ошибку.
Этот код хорошо работает:
df1 <- data.frame(v=1:10, v2=rev(1:10))
df2 <- data.frame(vv=1:8, v2=rev(5:12))
df12 <- merge(x=df1, y=df2, by.x=1, by.y=1, all=TRUE, suffixes=c(".x", ".y"))
df3 <- data.frame(w=2:6, v2=3:7)
df123 <- merge(x=df12, y=df3, by.x=1, by.y=1, all=TRUE, suffixes=c(".x", ".y"))
df4 <- data.frame(x=1:6, v2=1:6)
df1234 <- merge(x=df123, y=df4, by.x=1, by.y=1, all=TRUE, suffixes=c(".x", ".y"))
Этот код выдает сообщение об ошибке в последней строке: Ошибка в match.names (clabs, names (xi)): имена не соответствуют предыдущим именам.Единственное изменение состоит в том, что nrow (df4)> nrow (df123)
df1 <- data.frame(v=1:10, v2=rev(1:10))
df2 <- data.frame(vv=1:8, v2=rev(5:12))
df12 <- merge(x=df1, y=df2, by.x=1, by.y=1, all=TRUE, suffixes=c(".x", ".y"))
df3 <- data.frame(w=2:6, v2=3:7)
df123 <- merge(x=df12, y=df3, by.x=1, by.y=1, all=TRUE, suffixes=c(".x", ".y"))
df4 <- data.frame(x=1:16, v2=1:16)
df1234 <- merge(x=df123, y=df4, by.x=1, by.y=1, all=TRUE, suffixes=c(".x", ".y"))
Давайте посмотрим имена столбцов df123
names(df123)
[1] "v" "v2.x" "v2.y" "v2"
Затем изменим фамилию на произвольную
names(df123)[4] <- "v3"
И теперь эта строка кода будет работать правильно
df1234 <- merge(x=df123, y=df4, by.x=1, by.y=1, all=TRUE, suffixes=c(".x", ".y"))
Это ошибка?Я использовал R 2.13.1 на Win7.Если вам понадобится какая-то другая информация, я добавлю ее к вопросу.