creating a function using for if
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.