[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
>
> Please help, thanks!
>
>         [[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.




More information about the R-help mailing list