R での修正方法: $ 演算子はアトミック ベクトルに対して無効です
この記事では、$ 演算子がアトミック ベクトルに対して無効であることを修正する方法を説明します。 Rプログラミング 言語 。
R で直面する可能性のあるエラーは次のとおりです。
$ operator is invalid for atomic vectors
このようなエラーは、$ 演算子を使用してアトミック ベクトルの要素を取得しようとすると、R コンパイラによって生成されます。アトミック ベクトルは、c() 関数と Vector() 関数を使用して作成されたデータを含む単純な 1 次元オブジェクトです。 R では、$ 記号を使用して原子ベクトルの要素にアクセスすることはできません。ただし、二重括弧、つまり [[]] または getElement() 関数を使用してアクセスできます。
このエラーが発生する可能性がある場合
数値ベクトルがある例を考えてみましょう。 運ぶ 最初の 5 つの自然数で初期化されます。 R の names() 関数を使用して、各数値に名前が割り当てられます。 names() 関数の構文は次のとおりです。
構文: names(vect) <- 値
パラメーター:
- vect: オブジェクト、つまりベクトル、行列、データ フレームなど。
- value: 割り当てられる対応する名前
R
# Define a vector> vect <-> c> (1, 2, 3, 4, 5)> > # Set integers names> names> (vect) <-> c> (> 'first'> ,> 'second'> ,> 'third'> ,> > 'fourth'> ,> 'fifth'> )> > # Display the vector> vect> |
出力:
次に、次のステートメントを使用して要素の 3 番目の要素にアクセスしてみましょう。 vect$thirth:
R
# Define a vector> vect <-> c> (1, 2, 3, 4, 5)> > # Set integers names> names> (vect) <-> c> (> 'first'> ,> 'second'> ,> 'third'> ,> > 'fourth'> ,> 'fifth'> )> > # Display the vector> vect$third> |
出力:
この方法ではアトミック ベクトル内の要素にアクセスすることはできないため、R コンパイラはエラーを生成します。ベクトルが本当にアトミック ベクトルであるかどうかを確認するには、R の is.atomic() 関数を使用できます。この関数の構文は次のとおりです。
構文: is.atomic(vect)
パラメーター:
vect: ここで、vect はベクトルを表します
戻り値の型:
- TRUE: vect が原子ベクトルの場合
- FALSE: vect が原子ベクトルではない場合
エラーを修正する方法
使用方法は 3 つあります このエラーは修正できます:
方法 1: 二重括弧を使用して要素にアクセスする
二重括弧 [[]] を使用すると、原子ベクトルの要素に簡単にアクセスできます。
R
# Define a vector> vect <-> c> (1, 2, 3, 4, 5)> > # Set integers names> names> (vect) <-> c> (> 'first'> ,> 'second'> ,> 'third'> ,> > 'fourth'> ,> 'fifth'> )> > # Display the third element of the> # vector> vect[[> 'third'> ]]> |
出力:
方法 2: getElement() 関数を使用して要素にアクセスする
もう 1 つの方法は、getElement() 関数を使用してアトミック ベクトルの要素にアクセスすることです。関数の構文は次のとおりです。
構文: getElement(vect, 指定子)
パラメーター:
- vect: ベクトルを表します
- 指定子: アクセスしたい要素の名前を表します。
戻り値の型:
- 指定子でマークされた要素を返します
R
# Define a vector> vect <-> c> (1, 2, 3, 4, 5)> > # Set integers names> names> (vect) <-> c> (> 'first'> ,> 'second'> ,> 'third'> ,> > 'fourth'> ,> 'fifth'> )> > # Display the third element of> # the vector> getElement> (vect,> 'third'> )> |
出力:
方法 3: ベクトルをデータ フレームに変換し、$ 演算子を使用して要素にアクセスする
もう 1 つの方法は、まずベクトルをデータ フレームに変換してから $ 演算子を適用することです。 as.data.frame() 関数を使用して、ベクトルをデータ フレームに変換できます。この関数の構文は次のとおりです。
構文: as.data.frame(オブジェクト)
パラメータ:
- オブジェクトはベクトルまたは行列を表します
戻り値の型:
- ベクトルを返します
R
# Define a vector> vect <-> c> (1, 2, 3, 4, 5)> > # Set integers names> names> (vect) <-> c> (> 'first'> ,> 'second'> ,> 'third'> ,> > 'fourth'> ,> 'fifth'> )> > # Transform the vector to data frame> dataframe <-> as.data.frame> (> t> (vect))> > # Access the third element> dataframe$third> |
出力: