多くの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、名前(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"))
はその後、任意の1
names(df123)[4] <- "v3"
上の最後の名前を変更するのは、df123
names(df123)
[1] "v" "v2.x" "v2.y" "v2"
の列の名前を見てみましょうということですそして今このコード行は正しく動作します
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 < - data.frame(x = 1:11、v2 = 1:11)'とすると、報告されたエラー。私は、問題が、動作するときに、 '名前(df1234)'が '' [1] v''''''''''''''' v2.y''''' v2.x'''''''''を '' '' v2.y''に与えると想像します。正常に構築されたデータフレームでは発生してはならない重複した列名があります。このエラーは、 'backndrace()'からわかるように、 'ribnd(x、ya)'からスローされています。 –
ご清聴ありがとうございます! – DrDom