# [R] creating a function using for if

jim holtman jholtman at gmail.com
Mon Oct 22 17:52:35 CEST 2012

```Try this -- this uses the vectorization which you need to read up on
in the Intro to R:

> #set the function
> fun<-function(a,b,c,data)
+ {
+ N <- numeric(length(data))  # initialize to zero
+ indx <- data > c  # determine which data is greater than c
+ N[indx] <- (a * (data[indx] - c) ^ 0.5) + (b * (data[indx] - c))
+ N
+ }
>
> #try dummy
> data=c(100,210,320,130,170,120,220,90,55,45)
> try=fun(10000,0.2,150,data=data)
>
> try
[1]      0.00  77471.67 130418.05      0.00  44725.36      0.00
83680.00      0.00      0.00
[10]      0.00
>

On Mon, Oct 22, 2012 at 10:51 AM, Balqis <aehan3616 at gmail.com> wrote:
> Hi all,
>
> I'm trying to create a function where it can process a vector and also give
> a vector output accordingly
> #input: a,b anc c are constants, data is the vector
>
> #set the function
> fun<-function(a,b,c,data)
> {
> N=as.vector()
> for (i in min(data):max(data)){
> if(i>c){
> N<-(a*(i-c)^0.5)+(b*(i-c))}
> else
> {N<-0}}
> return(N)
> }
>
> #try dummy
> data=c(100,210,320,130,170,120,220,90,55,45)
> try=fun(10000,0.2,150,data=data)
>
> what I get is:
> Error in as.vector() : argument "x" is missing, with no default
>
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

--
Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.

```