修正方法: 置換する項目の数が置換の長さの倍数ではありません


R で発生する可能性のあるエラーは次のとおりです。

 Warning message:
  number of items to replace is not a multiple of replacement length

このエラーは、ベクトルまたはデータ フレーム列内の特定の数の要素 (3 要素と想定) を別の数の要素 (6 要素と想定) に置き換えようとすると発生します。

このチュートリアルでは、このエラーを修正する方法を正確に説明します。

エラーを再現する方法

R に次のデータ フレームがあり、最初の列にいくつかの欠損値があるとします。

 #create data frame
df <- data. frame (a=c(3, NA, 7, NA, NA, 14),
                 b=c(4, 4, 5, 12, 13, 18))

#view data frame
df

   ab
1 3 4
2 NA 4
3 7 5
4 NA 12
5 NA 13
6 14 18

ここで、最初の列の欠損値を 2 番目の列の値で置き換えようとするとします。

 #attempt to replace missing values in first column with values in second column
df$a[is. na (df$a)] <- df$b

Warning message:
In df$a[is.na(df$a)] <- df$b:
  number of items to replace is not a multiple of replacement length

最初の列の3 つの欠落値を 2 番目の列の6 つの値で置き換えようとしたため、エラーが発生します。

エラーを修正する方法

このエラーを修正する最も簡単な方法は、単純にifelse()ステートメントを使用することです。

 #replace missing values in column 'a' with corresponding values in column 'b'
df$a <- ifelse(is. na (df$a), df$b, df$a)

#view updated data frame
df

   ab
1 3 4
2 4 4
3 7 5
4 12 12
5 13 13
6 14 18

このifelse()ステートメントは、列「a」の値が空かどうかをチェックします。そうである場合は、列「b」の対応する値に置き換えられます。そうでない場合は、そのまま残されます。

このエラーを修正するもう 1 つの方法は、すべての欠落値を特定の数値で単純に置き換えることです。

 #replace all missing values in column 'a' with zero
df$a[is. na (df$a)] <- 0

#view updated data frame
df

   ab
1 3 4
2 0 4
3 7 5
4 0 12
5 0 13
6 14 18

この方法を使用すると、列「a」の欠損値がそれぞれ 0 に置き換えられます。

追加リソース

R で修正する方法: 強制によって導入された NA
R で修復する方法: 範囲外のインデックス
R での修正方法: 長いオブジェクトの長さが短いオブジェクトの長さの倍数ではありません

コメントを追加する

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