在R中编码函数的向量化方法

时间:2016-10-19 15:52:43

标签: r

如果我想编写数学函数:

f(x)
     = 12 for x>1
     = x^2 otherwise

如果我使用

mathfn<-function(x)
{
    if(x>1)
    {
        return(12)
    }
    else
    {
        return(x^2)
    }
}

然后我认为这不是编码它的好方法,因为它对于x是矢量的调用不是通用的。例如plot()或integrate()失败。

plot(mathfn, 0,12)
Warning message:
In if (x > 1) { :
  the condition has length > 1 and only the first element will be used

什么是一个更健壮,矢量化的习惯用法来编码,以便x可以是标量或向量?

1 个答案:

答案 0 :(得分:4)

这样的事情会起作用吗?

mathfn <- function(x) ifelse(x > 1, 12, x^2)