問題の解決方法: 「列名」を設定してみてください。 2 次元未満のオブジェクトの場合


R の使用時に発生する可能性のあるエラー メッセージは次のとおりです。

 Error in `colnames<-`(`*tmp*`, value = c("var1", "var2", "var3")): 
  attempt to set 'colnames' on an object with less than two dimensions

このエラーは通常、 colnames()関数を使用してデータ フレームまたは行列ではないオブジェクトに列名を設定しようとしたときに発生します。

次の例は、このエラーを実際に解決する方法を示しています。

エラーを再現する方法

R に次のデータ フレームがあるとします。

 #create data frame
df <- data. frame (team=c('A', 'A', 'C', 'B', 'C', 'B', 'B', 'C', 'A'),
                 points=c(12, 8, 26, 25, 38, 30, 24, 24, 15),
                 rebounds=c(10, 4, 5, 5, 4, 3, 8, 18, 22))

#view data frame
df

  team points rebounds
1 to 12 10
2 to 8 4
3 C 26 5
4 B 25 5
5 C 38 4
6 B 30 3
7 B 24 8
8 C 24 18
9 to 15 22

ここで、データ フレームの最後に新しい行を追加しようとするとします。

 #define new row to add to end of data frame
new_row <- c('D', 15, 11)

#attempt to define column names for new row
colnames(new_row) <- colnames(df)

Error in `colnames<-`(`*tmp*`, value = c("team", "points", "rebounds")): 
  attempt to set 'colnames' on an object with less than two dimensions

データフレームまたは行列ではなくベクトルに対してcolnames()関数を使用したため、エラーが発生します。

エラーを修正する方法

このエラーを回避するには、データ フレームでcolnames()関数を使用するようにする必要があります。

たとえば、次のコードを使用して、データ フレームの最後に新しい行を追加できます。

 #define new row to add to end of data frame
new_row <- data. frame ('D', 15, 11)

#define column names for new row
colnames(new_row) <- colnames(df)

#add new row to end of data frame
df <- rbind(df, new_row)

#view updated data frame
df

   team points rebounds
1 to 12 10
2 to 8 4
3 C 26 5
4 B 25 5
5 C 38 4
6 B 30 3
7 B 24 8
8 C 24 18
9 to 15 22
10 D 15 11

今回は、ベクトルの代わりにcolnames()関数を使用してデータフレームの列名を設定したため、エラーは発生しません。

これで、rbind() を使用して改行を既存のデータ フレームの末尾にバインドできるようになります。

追加リソース

次のチュートリアルでは、R の他の一般的なエラーを修正する方法について説明します。

R での修正方法: 引数に異なる行数が含まれる
R での修正方法: 未使用の引数を選択する際のエラー
R での修復方法: 置換の長さはゼロです

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です