Получение «Ошибка в as.vector (x.mode): невозможно принудительно привести тип« замыкание »к вектору типа« любой »» - PullRequest
1 голос
/ 03 апреля 2019

Я получаю следующую ошибку.

Error in as.vector(x, mode) : 
  cannot coerce type 'closure' to vector of type 'any'

Я хочу построить f2 (x) против x, используя опцию matplot в RStudio.Я что-то упускаю?

f2<-function(x){
  if(x>=0){
    return(sqrt(x))
  }else{
    return(sqrt(-x))
  }
}

x<- seq(from= -5, to= 5, by= 0.001)

require(graphics)
matplot(f2, x, type = "1", xlab = expression(alpha), ylab = expression(sqrt(abs(alpha)))) 

1 Ответ

1 голос
/ 03 апреля 2019

Функция f2 не была применена к «х».Сказав это, if/else не будет эффективным здесь, так как он не векторизован, и нам может понадобиться цикл, если нам нужно применить.Вместо этого другая функция с ifelse или внутри функции создает логический индекс и заменяет исходный вектор на основе индекса

f1 <- function(v) {
  i1 <- v >= 0
  v[i1] <- sqrt(v[i1])
  v[!i1] <- sqrt(-v[!i1])
   v
 }
matplot(f1(x), type = "l", xlab = expression(alpha),
              ylab = expression(sqrt(abs(alpha)))) 

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...