R エラーの処理方法: $ 演算子はアトミック ベクトルに対して無効です
R で発生する可能性のある一般的なエラーは次のとおりです。
$ operator is invalid for atomic vectors
このエラーは、 $演算子を使用してアトミック ベクトルの要素にアクセスしようとすると発生します。
「アトミック ベクトル」とは、R のc()関数またはVector()関数を使用して作成された 1 次元のデータ オブジェクトです。
残念ながら、 $を使用してアトミック ベクトルの要素にアクセスすることはできません。代わりに、二重括弧[[]]またはgetElement()関数を使用する必要があります。
このチュートリアルでは、このエラーを実際に処理する方法の例を紹介します。
エラーメッセージを再現する方法
$演算子を使用して、R 内の次のベクトルの要素にアクセスしようとしているとします。
#definevector
x <- c(1, 3, 7, 6, 2)
#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')
#display vector
x
a B C D E
1 3 7 6 2
#attempt to access value in 'e'
x$e
Error in x$e: $ operator is invalid for atomic vectors
$演算子を使用してアトミック ベクトルの要素にアクセスすることは無効であるため、エラーが発生します。また、ベクトルが実際にアトミックであることを確認することもできます。
#check if vector is atomic
is. atomic (x)
[1] TRUE
方法 #1: 二重括弧を使用して要素にアクセスする
ベクトル内の名前で要素にアクセスする 1 つの方法は、 [[]]表記を使用することです。
#definevector
x <- c(1, 3, 7, 6, 2)
#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')
#access value for 'e'
x[['e']]
[1] 2
方法 #2: getElement() を使用して要素にアクセスする
ベクトル内の名前で要素にアクセスするもう 1 つの方法は、 getElement()表記を使用することです。
#definevector
x <- c(1, 3, 7, 6, 2)
#provide names
names(x) <- c('a', 'b', 'c', 'd', 'e')
#access value for 'e'
getElement(x, 'e')
[1] 2
方法 #3: ベクトルをデータ フレームに変換し、$operator を使用する
ベクトル内の名前で要素にアクセスするもう 1 つの方法は、まずベクトルをデータ フレームに変換し、次に$演算子を使用して値にアクセスすることです。
#definevector x <- c(1, 3, 7, 6, 2) #provide names names(x) <- c('a', 'b', 'c', 'd', 'e') #convert vector to data frame data_x <- as. data . frame (t(x)) #display data frame data_x a B C D E 1 1 3 7 6 2 #access value for 'e' data_x$e [1] 2
追加リソース
次のチュートリアルでは、R の他の一般的なエラーを解決する方法について説明します。
R での修正方法: 名前が以前の名前と一致しない
R で修正する方法: 強制によって導入された NA
R で修復する方法: 範囲外のヒント
R での修正方法: コントラストは 2 レベル以上の因子にのみ適用できます。