Секреты науки о данных

Распространенные ошибки в R и методах отладки

Руководство для начинающих по отладке кода

Хотя каждая ошибка в программе уникальна, некоторые из них возникают часто и могут быть быстро исправлены. Это руководство призвано помочь вам исправить распространенные ошибки и дать советы, как понять ошибки в целом.

Ошибка: "не удалось найти функцию"

Эта ошибка возникает, когда пакет R загружен неправильно или из-за неправильного написания функций.

Ошибка: «Объект не найден»

Эта ошибка возникает, когда конкретный объект, используемый в коде, пуст.

Это происходит, если вы забыли инициализировать объект или забыли запустить строку, в которой вы инициализировали объект.

"Ошибка в случае"

«Ошибка в if» означает, что логический оператор в if() не дает логического значения. Большинство из них имеют пропущенные значения там, где требуется TRUE/FALSE.

"Ошибка: не удается открыть соединение"

У этой ошибки может быть две причины:

  1. Файл/соединение не может быть открыто, потому что R не может его найти (в основном из-за ошибки в пути)
  2. Ошибка в .onLoad(), потому что пакет не может найти системную зависимость.

Переустановите пакет .onLoad.

Ошибка: "Подстрочный индекс выходит за пределы"

Эта ошибка может возникнуть при неправильном использовании вложенных циклов в коде.

Ошибка: «нечисловой аргумент бинарного оператора»

Это прямо вперед. Оператор ожидает числовое значение, но вы ввели нечисловое значение.

Ошибка: «замена есть»

Эта ошибка возникает из-за несоответствия длин существующего оператора и заданного вектора значений.

Быстрые исправления:

  • Проверьте правописание.
  • Перепроверьте названия столбцов, чтобы убедиться, что вы правильно их поняли.
  • Убедитесь, что вы выполнили каждую строку кода.
  • Убедитесь, что все скобки закрыты.
  • Убедитесь, что вы загрузили свои данные, прежде чем работать с ними.
  • Убедитесь, что вы загрузили нужные вам библиотеки и пакеты.
  • Перезапустите IDE.
  • Проверьте устаревшие функции.
  • Лишняя запятая проставлена ​​по ошибке.
  • Если ваша программа дала сбой, опубликуйте воспроизводимый пример в R-help.

Отладка среднего уровня

Когда вы начнете свой путь кодирования, вы будете постепенно работать с более крупными фрагментами кода. Это когда вы учитесь использовать сложные инструменты отладки, а следующие экспертные методы помогут вам отлаживать свой код самостоятельно. Если вы хотите проверить свой код и понять его еще лучше, попробуйте использовать эти отличные инструменты, предоставляемые RStudio:

  • Функция RStudio traceback() и «стек вызовов», в котором перечислены последовательности вызовов, которые приводят к ошибке.
  • options(error = browser) RStudio, который открывает интерактивный сеанс, показывающий, где произошла ошибка.

Совет: работайте над небольшими фрагментами кода. Пробегитесь по каждой строке в поисках орфографических ошибок, незакрытых скобок, неверных названий столбцов и т. д.

Шаг 1. Определите последовательность звонков

Первый инструмент — это стек вызовов, последовательность вызовов, которые приводят к ошибке. Вот простой пример: функция a вызывает функцию b, но функция c добавляет строку с числом с плавающей запятой, создавая ошибку:

x <- function(a) g("a")
y <- function(b) h("b")
z <- function(c) a+"a"
x(10)

Вывод:

Ошибка в a + «a»: нечисловой аргумент бинарного оператора

После запуска кода справа от сообщения об ошибке появляются две опции: «Показать трассировку» и «Повторить запуск с отладкой». Если вы нажмете «Показать трассировку», вы увидите:

4.i(c) 
3.h(b) 
2.g("a") 
1.x(10)

Прочитайте стек вызовов снизу вверх: начальный вызов — x(10), который вызывает g("a"), затем h(b), затем i(c), который вызывает ошибку.

Если вы вызываете код, который вы source()d, в R, трассировка также будет отображать местоположение функции в форме filename.r#linenumber. Нажав на нее, вы перейдете к соответствующей строке кода в редакторе.

Теперь вы обнаружили ошибку, но до сих пор не знаете, почему это произошло. Следующим полезным инструментом является интерактивный отладчик, который позволяет вам приостанавливать выполнение функции и интерактивно исследовать ее состояние.

Шаг 2. Ошибка просмотра

Самый простой способ войти в интерактивный отладчик — использовать инструмент RStudio «Rerun with Debug». Это повторно запускает команду, вызвавшую ошибку, приостанавливая выполнение там, где произошла ошибка. Теперь вы находитесь в интерактивном состоянии внутри функции и можете взаимодействовать с любым определенным там объектом. Вы увидите соответствующий код в редакторе (с выделенным оператором, который будет запущен следующим), объекты в текущей среде на панели «Среда», стек вызовов на панели «Отслеживание», и вы можете запустить произвольный R код в консоли.

Помимо любой обычной функции R, есть несколько специальных команд, которые можно использовать в режиме отладки. Вы можете получить к ним доступ либо с помощью панели инструментов RStudio, либо с помощью клавиатуры:

  • «Далее» или n: выполнение следующего шага функции.
  • «Шаг внутрь» или s: если следующим шагом является функция, он войдет в эту функцию, чтобы вы могли работать с каждой строкой.
  • «Готово» или f: завершает выполнение текущего цикла или функции.
  • «Продолжить» или c: выход из интерактивной отладки и продолжение обычного выполнения функции.
  • «Стоп» или Q: останавливает отладку, завершает функцию и возвращает в глобальную рабочую область.

Благодаря этим советам вы теперь готовы к отладке собственного кода в будущих проектах.

Свяжитесь со мной:

Facebook, Twitter, Quora, Youtube и Linkedin. #ИИ