R で修復する方法: 置換には x 行があり、データには y があります


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

 Error in `$<-.data.frame`(`*tmp*`, conf_full, value = c("West", "West",: 
  replacement has 3 rows, data has 5

このエラーは、値が既存の列に基づいているデータ フレームに新しい列を追加しようとしたが、最初に新しい列を作成できない場合に発生します。

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

エラーを再現する方法

R で次のデータ フレームを作成するとします。

 #create data frame
df <- data. frame (conference=c('W', 'W', 'W', 'E', 'E'),
                 points=c(99, 90, 86, 88, 95),
                 assists=c(33, 28, 31, 39, 34))	

#view data frame
df

  conference points assists
1 W 99 33
2 W 90 28
3 W 86 31
4 E 88 39
5 E 95 34

ここで、 conf_fullという名前のデータ フレームに新しい列を追加しようとするとします。

 #attempt to create new column based on conference name
df$conf_full[which(df$conference==' W ')] <- ' West '
df$conf_full[which(df$conference==' E ')] <- ' East '

Error in `$<-.data.frame`(`*tmp*`, conf_full, value = c("West", "West",: 
  replacement has 3 rows, data has 5

変数名conf_full がまだ存在しないため、エラーが発生します。これは、まだこの列に値を割り当てることができないことを意味します。

エラーを回避する方法

このエラーを回避するには、まずconf_full変数を作成し、それに NA の値を割り当てるだけです。

 #create conf_full variable
df$conf_full <- NA

変数が存在するので、それに値を割り当てることができます。

 #create new column based on conference
df$conf_full[which(df$conference==' W ')] <- ' West '
df$conf_full[which(df$conference==' E ')] <- ' East '

#view updated data frame
df

  conference points assists conf_full
1 W 99 33 West
2 W 90 28 West
3 W 86 31 West
4 E 88 39 East
5 E 95 34 East

値を割り当てる前にconf_full変数を作成したため、今回はエラーが発生していないことに注意してください。

追加リソース

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

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

コメントを追加する

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