获取“ as.vector(x.mode)中的错误:无法将类型'closure'强制转换为类型为'any'的向量”

时间:2019-04-03 03:31:19

标签: r

我一直收到以下错误。

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

我想使用RStudio中的matplot选项绘制f2(x)对x。有什么我想念的吗?

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 个答案:

答案 0 :(得分:1)

函数f2未应用于'x'。话虽如此,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