У цій статті ми побачимо, як виправити недійсний оператор $ для атомарних векторів у R програмування мова .
Помилка, з якою можна зіткнутися в R:
$ operator is invalid for atomic vectors>
Така помилка створюється компілятором R, коли ми намагаємося отримати елемент атомарного вектора за допомогою оператора $. Атомний вектор — це просто одновимірний об’єкт, що містить дані, створені за допомогою функцій c() і vector(). R не дозволяє отримати доступ до елементів атомарного вектора за допомогою символу $. Але ми можемо використовувати подвійні дужки, наприклад, [[]] або функцію getElement() для доступу до них.
перенесення слів css
Коли може виникнути ця помилка
Давайте розглянемо приклад, у якому ми маємо числовий вектор нести ініціалізується першими п'ятьма натуральними числами. Кожному з чисел присвоюється ім’я за допомогою функції names() у R. Синтаксис функції names() наведено нижче:
Синтаксис: імена(vect) <- значення
Параметри:
- vect: об’єкт, тобто вектор, матриця, кадр даних тощо.
- значення: відповідні імена, які потрібно призначити
Р
# 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> |
>
>
Вихід:

Тепер давайте спробуємо отримати доступ до третього елемента за допомогою оператора, vect$третій:
Р
# 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 створює помилку, тому що нам не дозволено отримати доступ до елементів у атомарному векторі таким чином. Щоб перевірити, чи дійсно вектор є атомарним вектором, ми можемо використати функцію is.atomic() у R. Синтаксис цієї функції наведено нижче:
Синтаксис: is.atomic(vect)
Параметри:
vect: тут vect представляє вектор
Тип повернення:
- ІСТИНА: якщо vect є атомарним вектором
- FALSE: якщо vect не є атомарним вектором
Як виправити помилку
Є три способи використання яких ми можемо виправити цю помилку:
Спосіб 1: доступ до елементів за допомогою подвійних дужок
Ми можемо легко отримати доступ до елементів атомарного вектора за допомогою подвійних дужок [[]]:
Р
# 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().
Іншим способом є використання функції getElement() для доступу до елементів атомарного вектора. Функція має такий синтаксис:
Синтаксис: getElement(vect, специфікатор)
Параметри:
- vect: представляє вектор
- специфікатор: представляє назву елемента, до якого ми хочемо отримати доступ
Тип повернення:
- Повертає елемент, позначений специфікатором
Р
# 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'> )> |
>
>
список c#
Вихід:

Спосіб 3: доступ до елементів шляхом перетворення вектора на кадр даних і використання оператора $
Інший спосіб — спочатку перетворити вектор на кадр даних, а потім застосувати оператор $. Ми можемо перетворити вектор на кадр даних за допомогою функції as.data.frame(). Синтаксис цієї функції наведено нижче:
Синтаксис: as.data.frame(об'єкт)
Параметр:
- об'єкт представляє вектор або матрицю
Тип повернення:
- Повертає вектор
Р
# 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> |
>
>
Вихід:
