首页 > 解决方案 > 获取“as.vector(x.mode)中的错误:无法将'closure'类型强制为'any'类型的向量”

问题描述

我不断收到以下错误。

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)))) 

标签: r

解决方案


该功能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)))) 

在此处输入图像描述


推荐阅读