用R向量化我的函数不起作用

Gab*_*mel 1 r function vectorization

我有这个功能:

fx <- function (x) {
  if (x <= 0) {
    return(-1 * (x**3))
  }
  else if (0 < x && x <= 1) {
    return(x**2)
  }
  else if (x > 1) {
    return(sqrt(x))
  }
}

Run Code Online (Sandbox Code Playgroud)

我将向量化函数转换为:

fVectorize <- function(x) {
  result <- ifelse(x <= 0, -1 * (x**3), ifelse(0 < x && x <= 1, x**2, sqrt(x)))
  result
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下值,但不起作用:

fVectorize(c(-2, -4, -5))
fVectorize(c(0.5, 0.3, 0.7))
fVectorize(c(3, -4, 0.7))
Run Code Online (Sandbox Code Playgroud)

似乎只是采取了第一个条件。

任何的想法?

dee*_*fan 5

更改&&&

fVectorize <- function(x) {
  result <- ifelse(x <= 0, -1 * (x**3), ifelse(0 < x & x <= 1, x**2, sqrt(x)))
  result
}
fVectorize(c(-2, -4, -5))
#[1]   8  64 125

fVectorize(c(0.5, 0.3, 0.7))
#[1] 0.25 0.09 0.49

fVectorize(c(3, -4, 0.7))
# [1]  1.732051 64.000000  0.490000

Run Code Online (Sandbox Code Playgroud)

&执行元素明智的操作,其中&&第一个元素返回值。