Jak opravit v R: Operátor $ je neplatný pro atomové vektory

Jak opravit v R: Operátor $ je neplatný pro atomové vektory

V tomto článku se podíváme na to, jak opravit, že operátor $ je neplatný pro atomové vektory v R programování Jazyk .

Chyba, se kterou se člověk může setkat v R, je:

$ operator is invalid for atomic vectors 

Takovou chybu vytváří kompilátor R, když se snažíme získat prvek atomového vektoru pomocí operátoru $. Atomový vektor je jednoduše 1-rozměrný objekt obsahující data vytvořená pomocí funkcí c() a vector(). R nám neumožňuje přístup k prvkům atomového vektoru pomocí symbolu $. K přístupu k nim však můžeme použít dvojité závorky, tj. [[]] nebo funkci getElement().

Kdy může dojít k této chybě

Podívejme se na příklad, ve kterém máme číselný vektor nést inicializováno prvními pěti přirozenými čísly. Každému z čísel je přiřazen název pomocí funkce names() v R. Syntaxe funkce names() je uvedena níže:

Syntax: jmen(vect) <- hodnota

Parametry:

  • vect: objekt, tj. vektor, matice, datový rámec atd.
  • hodnota: Odpovídající jména, která mají být přiřazena

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>

Výstup:

Nyní se pokusíme získat přístup k třetímu prvku pomocí příkazu, vect$third:

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>

Výstup:

Kompilátor R vytvoří chybu, protože tímto způsobem nemáme povolen přístup k prvkům v atomovém vektoru. Pro kontrolu, zda je vektor skutečně atomárním vektorem, můžeme použít funkci is.atomic() v R. Syntaxe této funkce je uvedena níže:

Syntax: is.atomic(vect)

Parametry:

vect: Zde vect představuje vektor

Typ vrácení:

  • TRUE: Pokud je vect atomový vektor
  • FALSE: Pokud vect není atomový vektor

Jak opravit chybu

Existují tři způsoby, jak toho využít můžeme opravit tuto chybu:

Metoda 1: Přístup k prvkům pomocí dvojitých závorek

K prvkům atomového vektoru můžeme snadno přistupovat pomocí dvojitých závorek, které, [[]]:

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'> ]]>

Výstup:

Metoda 2: Přístup k prvkům pomocí funkce getElement().

Dalším způsobem je použití funkce getElement() pro přístup k prvkům atomového vektoru. Funkce má následující syntaxi:

Syntax: getElement(vect, specifikátor)

Parametry:

  • vect: Představuje vektor
  • specifikátor: Představuje název prvku, ke kterému chceme přistupovat

Typ vrácení:

  • Vrátí prvek označený specifikátorem

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'> )>

Výstup:

Metoda 3: Přístup k prvkům převodem vektoru na datový rámec a poté pomocí operátoru $

Druhým způsobem je nejprve převést vektor na datový rámec a poté použít operátor $. Vektor můžeme převést na datový rámec pomocí funkce as.data.frame(). Syntaxe této funkce je uvedena níže:

Syntax: as.data.frame(object)

Parametr:

  • objekt představuje vektor nebo matici

Typ vrácení:

  • Vrátí vektor

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>

Výstup: