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: