logo

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


dfs algoritmus



# 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:

10 z 10

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>

pole přidávání prvků java

>

>

Výstup: