Ошибка в кривой (expr = x, from = from, to = to, xlim = xlim, ylab = ylab, : ‘expr’ не оценил объект длины ‘n’

#r #plot #error-handling #curve

#r #график #обработка ошибок #кривая

Вопрос:

Я хотел построить следующую фрагментарную функцию, однако я продолжаю получать ошибку

 a <- function(x) {ifelse(( x < -1), 0, ifelse((-1 < x amp; x < 2),(x^3   1)/9, ifelse((x > 2), 1, NA))) } 
 plot(a, xlim=c(-5, 5), ylim = c(-4, 7), col = "red") 
 abline(v = 0, h = 0)
  

Комментарии:

1. Вы имели в виду x <=1 ? Или x < -1 ? Вероятно, вы получаете эту ошибку, потому <- что имеет значение в R как оператор присваивания.

Ответ №1:

Ваш код почти правильный, но добавление пробелов для удобства чтения поможет. Ошибка возникает, как упоминает @Phil, потому x<-1 что интерпретируется R как «присвоить значение 1 x». Вы используете версию команды plot для построения графиков функций, которая задокументирована с curve помощью функции (см. ?curve ). Вероятно, вам следует включить аргументы from= и to= , но функция будет использовать значения xlim без них:

 a <- function(x){ ifelse(( x < -1), 0, ifelse((-1 < x amp; x < 2),(x^3   1)/9, ifelse((x > 2), 1, NA))) }
plot(a, from=-5, to=5, n=201, xlim=c(-5, 5), ylim = c(-4, 7), col = "red")
abline(v = 0, h = 0, lty=3)
  

Обратите внимание на дополнение к вашей plot() команде. Я изменил abline использование пунктирной линии, что облегчает просмотр функции. Добавление n=201 увеличивает количество точек в линии, поэтому кривая становится более гладкой, а разрыв между сегментами меньше.

График