Daten Zusammenführen.frames verursachen match.Namen Fehler

Ich Zusammenführen müssen viele Daten.frames. Unterhalb der sample-code zu reproduzieren, ist ein Fehler. Es sieht aus wie ein bug.

Dieser code funktioniert auch:

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"))

Dieser code produzieren die Fehlermeldung in der letzten Zeile: Fehler in der übereinstimmung.Namen(clabs, Namen(xi)) : die Namen passen nicht zu den vorherigen Namen. Die einzige änderung ist, dass 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"))

Lassen Sie uns sehen, die Namen der Spalten von df123

names(df123)
[1] "v"    "v2.x" "v2.y" "v2" 

Dann ändern Sie den letzten Namen auf beliebiger

names(df123)[4] <- "v3"

Und jetzt diese Zeile code funktioniert

df1234 <- merge(x=df123, y=df4, by.x=1, by.y=1, all=TRUE, suffixes=c(".x", ".y"))

Ist es bug? Ich verwendete R-2.13.1 auf Win7.
Wenn Sie einige andere Informationen, ich werde es hinzufügen, um die Frage zu stellen.

  • Yep, das sieht aus wie ein echter bug. Dies wird wahrscheinlich gesendet werden, um die R-Mailinglisten. Wir sollten versuchen, und finden Sie die entsprechende Zeile in der merge.Daten.Bild zuerst, obwohl.
  • Ich bekomme das gleiche Verhalten, die Sie sehen, für R 2.14.1. Ich kann auch bestätigen, dass der Fehler passiert mit nrow(df4) größer als nrow(df123); mit df4 <- data.frame(x=1:10, v2=1:10) es funktioniert und mit df4 <- data.frame(x=1:11, v2=1:11) es gibt den gemeldeten Fehler. Ich kann mir vorstellen, dass das problem auf, wenn es funktioniert, dass names(df1234) gibt [1] "v" "v2.x" "v2.y" "v2.x" "v2.y". Es sind duplizierte Spalte Namen, die sollte nicht passieren, für gut ausgebaute Daten-frames. Der Fehler ausgelöst wird, von ribnd(x, ya) (wie gesehen werden kann, von backtrace()).
  • Vielen Dank für Ihre Klarstellung!
InformationsquelleAutor DrDom | 2012-01-17
Schreibe einen Kommentar