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 alsnrow(df123)
; mitdf4 <- data.frame(x=1:10, v2=1:10)
es funktioniert und mitdf4 <- data.frame(x=1:11, v2=1:11)
es gibt den gemeldeten Fehler. Ich kann mir vorstellen, dass das problem auf, wenn es funktioniert, dassnames(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, vonribnd(x, ya)
(wie gesehen werden kann, vonbacktrace()
). - Vielen Dank für Ihre Klarstellung!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist definitiv ein bug, getestet habe ich es in R 2.14.1 auf Windows 7, aber ich bezweifle, dass das Betriebssystem ankommt. Ich habe neu einen "kleineren" test-Fall ist der bug hier:
Tritt der Fehler in der "merge.Daten.frame" - Methode, auf diese Zeile:
Das problem ist, dass "x" und "ya" don ' T teilen die gleichen Spaltennamen. Dieses problem tritt auf, auf dieser Linie, nur zwei Zeilen zuvor:
"nm.x" ist eine Reihe von Namen c("v2.x","v2.y","v2.x"). und x ist ein Daten.frame mit zwei Spalten mit dem Namen 'v2.x'. Interessanterweise, wenn Sie die Spalten auswählen, die aus diesen Daten.frame, es scheint benennen Sie eine der Spalten!
Habe ich versucht zu lösen dies, indem Sie die position der Spalte, nicht der name, sondern der endgültige name wird noch geändert (aber die Werte sind jetzt, was Sie wollen)!
Habe ich gebucht dies als einen bug.
merge()
ist nicht mehr erlaubt, erstellen Sie ein data-frame mit doppelten Spaltennamen (die verwirrt PR#14786)." PR#14786 bezieht sich auf bugs.r-project.org/bugzilla3/show_bug.cgi?id=14786 das ist der bug-report abgeleitet aus dieser Diskussion.