Rで修復する方法:二項演算子の非数値引数
R で発生する可能性のあるエラーは次のとおりです。
Error in df$var1- df$var2: non-numeric argument to binary operator
このエラーは、2 つのベクトルに対して2 項演算を実行しようとし、そのうちの 1 つのベクトルが数値ではない場合に発生します。
二項演算の例を次に示します。
- 減算 ( – )
- 加算 ( + )
- 乗算 ( * )
- 除算 ( / )
このエラーは、指定したベクトルの 1 つが文字ベクトルである場合に最もよく発生します。
このチュートリアルでは、このエラーを修正する方法を正確に説明します。
エラーを再現する方法
R に次のデータ フレームがあるとします。
#create data frame
df <- data. frame (period = c(1, 2, 3, 4, 5, 6, 7, 8),
sales = c(14, 13, 10, 11, 19, 9, 8, 7),
returns = c('1', '0', '2', '1', '1', '2', '2', '3'))
#view data frame
df
period sales returns
1 1 14 1
2 2 13 0
3 3 10 2
4 4 11 1
5 5 19 1
6 6 9 2
7 7 8 2
8 8 7 3
ここで、「sales」列から「returns」列を減算して、「net」という新しい列を作成しようとするとします。
#attempt to create new column called 'net'
df$net <- df$sales - df$returns
Error in df$sales * df$returns: non-numeric argument to binary operator
「returns」列は「character」クラスであり、数値列から文字列を減算できないため、エラーが発生します。
#display class of 'sales' column
class(df$sales)
[1] "digital"
#display class of 'returns' column
class(df$returns)
[1] “character”
エラーを修正する方法
このエラーを修正する方法は、減算を実行する前にas.numeric()を使用して「returns」列を数値に変換することです。
#create new column called 'net'
df$net <- df$sales - as. numeric (df$returns)
#view updated data frame
df
period sales returns net
1 1 14 1 13
2 2 13 0 13
3 3 10 2 8
4 4 11 1 10
5 5 19 1 18
6 6 9 2 7
7 7 8 2 6
8 8 7 3 4
「sales」列と「returns」列が数値であるため、エラーなく減算を実行できます。
追加リソース
次のチュートリアルでは、R の他の一般的なエラーを解決する方法について説明します。
R での修正方法: dim(X) は正の長さでなければなりません
R での修正方法: 名前が以前の名前と一致しない
R での修正方法: 長いオブジェクトの長さが短いオブジェクトの長さの倍数ではありません
R での修正方法: コントラストは 2 レベル以上の因子にのみ適用できます。