R での修正方法: rbind(deparse.level, …) のエラー: 引数の列番号が一致しません
R で発生する可能性のあるエラーは次のとおりです。
Error in rbind(deparse.level, ...): numbers of columns of arguments do not match
このエラーは、R で rbind() 関数を使用して、列数が同じではない 2 つ以上のデータ フレームをバインドしようとすると発生します。
このチュートリアルでは、このエラーを修正する方法を正確に説明します。
エラーを再現する方法
R に次の 2 つのデータ フレームがあるとします。
#create first data frame
df1 <- data. frame (x=c(1, 4, 4, 5, 3),
y=c(4, 4, 2, 8, 10))
df1
xy
1 1 4
2 4 4
3 4 2
4 5 8
5 3 10
#create second data frame
df2 <- data. frame (x=c(2, 2, 2, 5, 7),
y=c(3, 6, 2, 0, 0),
z=c(2, 7, 7, 8, 15))
df2
X Y Z
1 2 3 2
2 2 6 7
3 2 2 7
4 5 0 8
5 7 0 15
ここで、 rbindを使用してこれら 2 つのデータ フレームを 1 つのデータ フレームにバインドしようとするとします。
#attempt to row-bind the two data frames together
rbind(df1, df2)
Error in rbind(deparse.level, ...):
numbers of columns of arguments do not match
2 つのデータ フレームの列数が同じではないため、エラーが発生します。
エラーを修正する方法
この問題を解決するには 2 つの方法があります。
方法 1: 共通列で rbind を使用する
この問題を解決する 1 つの方法は、 intersect()関数を使用してデータ フレーム間で共通の列名を検索し、それらの列上でのみデータ フレームをリンクすることです。
#find common column names
common <- intersect(colnames(df1), colnames(df2))
#row-bind only on common column names
df3 <- rbind(df1[common], df2[common])
#view result
df3
xy
1 1 4
2 4 4
3 4 2
4 5 8
5 3 10
6 2 3
7 2 6
8 2 2
9 5 0
10 7 0
方法2: dplyrのbind_rows()を使用する
この問題を解決するもう 1 つの方法は、 dplyrパッケージのbind_rows()関数を使用することです。この関数は、一致しない列名の NA 値を自動的に埋めます。
library (dplyr)
#bind together the two data frames
df3 <- bind_rows(df1, df2)
#view result
df3
X Y Z
1 1 4 NA
2 4 4 NA
3 4 2 NA
4 5 8 NA
5 3 10 NA
6 2 3 2
7 2 6 7
8 2 2 7
9 5 0 8
10 7 0 15
このデータ フレームにはz列が存在しないため、NA 値がdf1値に入力されることに注意してください。
追加リソース
次のチュートリアルでは、R の他の一般的なエラーを解決する方法について説明します。
R での修正方法: 名前が以前の名前と一致しない
R での修正方法: 長いオブジェクトの長さが短いオブジェクトの長さの倍数ではありません
R での修正方法: コントラストは 2 レベル以上の因子にのみ適用できます。