W tym artykule zobaczymy, jak naprawić nieprawidłowy operator $ dla wektorów atomowych w Programowanie R język .
Błąd, który można napotkać w R, to:
$ operator is invalid for atomic vectors>
Taki błąd generuje kompilator R, gdy próbujemy uzyskać element wektora atomowego za pomocą operatora $. Wektor atomowy to po prostu jednowymiarowy obiekt zawierający dane utworzone za pomocą funkcji c() i Vector(). R nie pozwala nam na dostęp do elementów wektora atomowego za pomocą symbolu $. Ale aby uzyskać do nich dostęp, możemy użyć podwójnych nawiasów, tj. [[]] lub funkcji getElement().
Kiedy może wystąpić ten błąd
Rozważmy przykład, w którym mamy wektor liczbowy nosić inicjalizowane pierwszymi pięcioma liczbami naturalnymi. Każdej z liczb przypisuje się nazwę za pomocą funkcji Names() w języku R. Składnię funkcji Names() podano poniżej:
Składnia: nazwy(vect) <- wartość
Parametry:
- vect: obiekt, tj. wektor, macierz, ramka danych itp.
- wartość: Odpowiednie nazwy, które mają zostać przypisane
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> |
>
>
Wyjście:
Spróbujmy teraz uzyskać dostęp do elementu trzeci element za pomocą instrukcji, vect$trzeci:
co to jest monitor
R
lista religii
# 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> |
>
>
Wyjście:
Kompilator R generuje błąd, ponieważ nie mamy w ten sposób dostępu do elementów wektora atomowego. Aby sprawdzić, czy wektor jest rzeczywiście wektorem atomowym, możemy użyć funkcji is.atomic() w R. Składnię tej funkcji podano poniżej:
Składnia: jest.atomowy(wektor)
Parametry:
vect: Tutaj vect reprezentuje wektor
Typ zwrotu:
- PRAWDA: Jeśli vect jest wektorem atomowym
- FAŁSZ: Jeśli vect nie jest wektorem atomowym
Jak naprawić błąd
Istnieją trzy sposoby użycia możemy naprawić ten błąd:
Metoda 1: Dostęp do elementów za pomocą podwójnych nawiasów
Możemy łatwo uzyskać dostęp do elementów wektora atomowego za pomocą podwójnych nawiasów, które to, [[]]:
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'>]]> |
>
>
Wyjście:
metoda 2: Dostęp do elementów za pomocą funkcji getElement().
Innym sposobem jest użycie funkcji getElement() w celu uzyskania dostępu do elementów wektora atomowego. Funkcja ma następującą składnię:
Składnia: getElement(vect, specyfikator)
Parametry:
- vect: reprezentuje wektor
- specyfikator: reprezentuje nazwę elementu, do którego chcemy uzyskać dostęp
Typ zwrotu:
- Zwraca element oznaczony specyfikatorem
R
Hasext Java
# 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'>)> |
>
>
Wyjście:
publiczna vs prywatna Java
Metoda 3: Dostęp do elementów poprzez konwersję wektora na ramkę danych, a następnie użycie operatora $
Innym sposobem jest najpierw przekonwertowanie wektora na ramkę danych, a następnie zastosowanie operatora $. Możemy przekształcić wektor w ramkę danych za pomocą funkcji as.data.frame(). Poniżej podano składnię tej funkcji:
Składnia: jako.data.frame(obiekt)
Parametr:
- obiekt reprezentuje wektor lub macierz
Typ zwrotu:
- Zwraca wektor
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> |
>
>
Wyjście: