我想对这样的函数进行矢量化:
if (i > 0)
fun1(a[i])
else
fun2(i)
其中fun1, fun2
已经向量化,并且a
是一个向量。
我的尝试:
ifelse(i > 0, fun1(a[i]), fun2(i))
然而这是错误的!
> a <- c(1,2,3,4,5)
> i<-c(0,1,2,3)
> ifelse(i > 0, a[i], 0)
[1] 0 2 3 1 # expected 0 1 2 3
我必须使用sapply
吗?有没有任何简单的替代方法有效?