thank you. yes I want to loop over the elements of the data. I want the
output to be corresponded to the input by unchanging index. at the same
time, the data that is more than c value should follow the
function (a*(data-c)^0.5)+(b*(data-c), and the rest (same or less than c)
should return a zero.  I tried adjusting the code (which is still in
ridiculous form and need some comments);

fun<-function(a,b,c,data)
{
N=rep(NA,length(data))
for (i in 1:length(data)){
if(data>c){
N[i]<-(a*(data-c)^0.5)+(b*(data-c))}
else
{N[i]<-0}
}
return(N)}

#try dummy
y=c(100,210,320,130,170,120,220,90,55,45)
try=fun(10000,0.2,150,data=y)

On Mon, Oct 22, 2012 at 3:51 PM, Balqis <aehan3616@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]]


