creating a function using for if
Then what about:
fun<-function(a,b,c,data) {
ifelse(data > c, (a*(data-c)^0.5)+(b*(data-c)), 0)
}
y=c(100,210,320,130,170,120,220,90,55,45)
fun(10000,0.2,150,data=y)
fun(10000,0.2,150,data=y)
[1] 0.00 77471.67 130418.05 0.00 44725.36 0.00 83680.00 [8] 0.00 0.00 0.00 Sarah
On Mon, Oct 22, 2012 at 11:24 AM, Balqis <aehan3616 at gmail.com> wrote:
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 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!
Sarah Goslee http://www.functionaldiversity.org