많은 data.frames를 병합해야합니다. 오류를 재현하는 코드 샘플 아래. 그것은 마치 버그처럼 보입니다. data.frames를 병합하면 match.names 오류가 발생합니다.
이 코드
잘 작동 :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, 이름 (11 세)) : 이름은 이전 이름과 일치하지 않습니다. 유일한 변화는
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"))
이의이
names(df123)
[1] "v" "v2.x" "v2.y" "v2"
그런 다음 임의의 하나
names(df123)[4] <- "v3"
에 마지막으로 이름을 변경 df123의 열 이름을 보자 그 nrow (DF4)> nrow (df123)입니다 이제이 코드는 올바르게 작동합니다.
df1234 <- merge(x=df123, y=df4, by.x=1, by.y=1, all=TRUE, suffixes=c(".x", ".y"))
버그입니까? Win7에서 R 2.13.1을 사용했습니다. 다른 정보가 필요하면 질문에 추가하겠습니다.
그래, 진짜 버그처럼 보입니다. 이것은 아마도 R listserv로 전송되어야합니다. 우리는 먼저 merge.data.frame의 해당 줄을 찾아야합니다. – nograpes
R 2.14.1과 동일한 동작을 보입니다. 또한 오류가 'nrow (df4)'가 'nrow (df123)'보다 커진다는 것을 확인할 수 있습니다. 'df4 <- data.frame (x = 1 : 10, v2 = 1 : 10)'을 사용하면'df4
설명해 주셔서 감사합니다. – DrDom