Подтвердить что ты не робот

Что означает "Ошибка: объект" <myvariable> "не найден"?

Я получил сообщение об ошибке:

Ошибка: объект 'x' не найден

Или более сложная версия, например

Ошибка в среднем (x):       ошибка при оценке аргумента 'x' при выборе метода для функции 'mean': Ошибка: объект 'x' не найден

Что это значит?

4b9b3361

Ответ 1

Ошибка означает, что R не может найти переменную, указанную в сообщении об ошибке.

Самый простой способ воспроизвести ошибку - ввести имя переменной, которая не существует. (Если вы уже определили x, используйте другое имя переменной.)

x
## Error: object 'x' not found

Более сложная версия ошибки имеет ту же причину: вызов функции, когда x не существует.

mean(x)
## Error in mean(x) : 
##   error in evaluating the argument 'x' in selecting a method for function 'mean': Error: object 'x' not found

Как только переменная определена, ошибка не будет выполнена.

x <- 1:5
x
## [1] 1 2 3 4 5     
mean(x)
## [1] 3

Вы можете проверить, существует ли переменная с помощью ls или exists.

ls()        # lists all the variables that have been defined
exists("x") # returns TRUE or FALSE, depending upon whether x has been defined.

Ошибки, подобные этому, могут возникать при использовании нестандартной оценки. Например, при использовании subset ошибка возникает, если имя столбца отсутствует в фрейме данных для подмножества.

d <- data.frame(a = rnorm(5))
subset(d, b > 0)
## Error in eval(expr, envir, enclos) : object 'b' not found

Ошибка также может возникнуть, если вы используете пользовательскую оценку.

get("var", "package:stats") #returns the var function
get("var", "package:utils")
## Error in get("var", "package:utils") : object 'var' not found

Во втором случае функция var не может быть найдена, когда R выглядит в среде пакета utils, поскольку utils далее вниз search, чем stats.


В более сложных случаях использования вы можете прочитать:

Ответ 2

Давайте обсудим, почему ошибка "объект не найден" может быть выбрана в R в дополнение к объяснению того, что это значит. То, что это означает (для многих), очевидно: рассматриваемая переменная, по крайней мере, в соответствии с интерпретатором R, еще не определена, но если вы видите свой объект в коде, может быть несколько причин, почему это происходит:/p >

  • проверить синтаксис ваших объявлений. Если вы неверно набрали хотя бы одну букву или использовали верхний регистр вместо нижнего регистра в более позднем операторе вызова, то он не будет соответствовать вашему первоначальному объявлению, и эта ошибка произойдет.

  • Вы получаете эту ошибку в записной книжке или документе уценки? Вам может просто потребоваться перезапустить предыдущую ячейку с вашими объявлениями, прежде чем запускать текущую ячейку, в которой вы вызываете переменную.

  • Вы пытаетесь связать свой R-документ, и переменная работает, когда вы запускаете ячейки, а не когда вы вязаете ячейки? Если это так - тогда вы хотите изучить сниппет, который я предоставляю ниже, для возможного побочного эффекта, который вызывает эту ошибку:

    {r sourceDataProb1, echo=F, eval=F} # some code here

Вышеприведенный фрагмент с начала ячейки метки R. Если eval и echo установлены в False, это может вызвать ошибку при попытке вязать документ. Прояснить. У меня был случай использования, когда я оставил эти флаги как False, потому что я думал, что не хочу, чтобы мой код повторялся или его результаты отображались в HTML-методе, который я генерировал. Но так как переменная затем использовалась в более поздних ячейках, это вызывало ошибку во время вязания. Простая пробная версия и ошибка с флагами T/F TRUE/FALSE могут установить, является ли это источником вашей ошибки, когда это происходит при вставке документа R markdown из RStudio.

Наконец: удалили ли вы эту переменную или очистили ее из памяти после ее объявления?

  • rm() удаляет переменную
  • нажатие значка метлы в окне защиты RStudio очищает все в текущей рабочей среде.
  • ls() может помочь вам увидеть, что сейчас активно, чтобы искать отсутствующее объявление.
  • существует ( "x" ) - как упоминалось другим плакатом, вы можете протестировать определенное значение в среде с очень длинным списком активных переменных