R での修正方法: 引数「no」が欠落しており、デフォルトはありません


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

 Error in ifelse(df$team == "B", "Boston"): 
  argument "no" is missing, with no default

このエラーは、R でifelse()関数を使用したが、ロジック テストが false を返した場合に返される値を指定する 3 番目の引数を含めるのを忘れた場合に発生します。

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

エラーを再現する方法

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

 #create data frame
df <- data. frame (team=c('B', 'B', 'B', 'B', 'C', 'C', 'C', 'D'),
                 points=c(12, 22, 35, 34, 20, 28, 30, 18),
                 assists=c(4, 10, 11, 12, 12, 8, 6, 10))

#view data frame
df

  team points assists
1 B 12 4
2 B 22 10
3 B 35 11
4 B 34 12
5 C 20 12
6 C 28 8
7 C 30 6
8 D 18 10

ここで、チーム列の値が「B」に等しい場合に、 ifelse()関数を使用して、「ボストン」を含むcityという名前の新しい列を作成しようとするとします。

 #attempt to create new column with team city
df$city <- ifelse(df$team == ' B ', ' Boston ')

Error in ifelse(df$team == "B", "Boston"): 
  argument "no" is missing, with no default

チーム列の値が「B」と等しくない場合に返す値を指定するifelse()関数の 3 番目の引数を指定できなかったため、エラーが発生します。

エラーを修正する方法

このエラーを修正する方法は、チーム列の値が「B」と等しくない場合に返す値を指定するifelse()関数に 3 番目の引数を指定するだけです。

次の構文は、これを行う方法を示しています。

 #create new column with team city
df$city <- ifelse(df$team == ' B ', ' Boston ', ' Other ')

#view updated data frame
df

  team points assists city
1 B 12 4 Boston
2 B 22 10 Boston
3 B 35 11 Boston
4 B 34 12 Boston
5 C 20 12 Other
6 C 28 8 Other
7 C 30 6 Other
8 D 18 10 Other

ifelse()関数に 3 番目の引数を指定したため、今回はエラーが発生していないことに注意してください。

この例では、 ifelse()関数は、チーム列の値が「B」と等しい場合は値「ボストン」を返し、チーム列の値がそれ以外の場合は値「その他」を返します。

追加リソース

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

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

コメントを追加する

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