[R] If (x > 0)

ilai keren at math.montana.edu
Tue Feb 14 17:54:30 CET 2012


On Tue, Feb 14, 2012 at 6:41 AM, Schmidt, Michael
<MSchmidt at med.miami.edu> wrote:
> So the function must come BEFORE the call to the function...I see.

Yes. May be different than what you're used to but in R think of
functions as just another set of "objects". Therefore they must be
declared in the environment from which they are called beforehand,
just like the arguments.

Cheers

Elai.

> Thanks for that info.
> Take care
> Mike
>
> -----Original Message-----
> From: ilaik9 at gmail.com [mailto:ilaik9 at gmail.com] On Behalf Of ilai
> Sent: Monday, February 13, 2012 6:19 PM
> To: Schmidt, Michael
> Subject: Re: [R] If (x > 0)
>
> After placing res <- conditional1(x) ; cat("result= ",res,"\n") AFTER defining the function conditional1 (or R wouldn't know what "conditional1" is), your script worked flawlessly for me.
> From the terminal in xubuntu10.04:
> $ R --no-save --slave --args 1 < test1.R [1] 1 result=  1 $ R --no-save --slave --args -1e-6 < test1.R [1] -1e-06 result=  -1 $ R --no-save --slave --args 0 < test1.R [1] 0 result=  0
>
> So maybe you had an old (bad) version of conditional1 which was used by test1 ?
>
> Cheers
>
>
>
> On Mon, Feb 13, 2012 at 2:59 PM, Schmidt, Michael <MSchmidt at med.miami.edu> wrote:
>> Hi,
>> I am new to R. I was trying to get a very simple program to run. Take
>> one number from the command line. If the number < 0 return -1. If
>> number > 0 return 1 and if the number == 0 return 0. The code is in a
>> file called test1.R
>>
>>
>> The code:
>>
>> #useage: R --no-save --args 5 < test1.R args = (commandArgs(TRUE)) x =
>> as.numeric(args[1])
>> print(x)
>>
>> res <- conditional1(x)
>> cat("result= ",res,"\n")
>>
>> conditional1 <- function(x){
>>        result <- 0
>>        if (x > 0) {
>>                result <- 1
>>        } else if (x < 0) {
>>                result <- -1
>>        }
>>        return(result)
>> }
>>
>>                result <- 1
>>        } else if (x < 0) {
>>                result <- -1
>>        }
>>        return(result)
>> }
>>
>>
>> The output:
>>>R --no-save --slave --args 1 < test1.R
>> [1] 1
>> result=  1
>>>R --no-save --slave --args -1 < test1.R
>> [1] -1
>> result=  -1
>>>] R --no-save --slave --args 0 < test1.R
>> [1] 0
>> result=  -1
>>
>>
>> The problem:
>> For arguments 1 and -1 it works as intended. For 0 (zero) it does not. If the 0 value is passed into the function named "conditional1"  I would expect both if-statements to evaluate to false and 0 being return. From what I can tell (0 < 0) evaluates to true since -1 is returned. Hmmmmm...
>> What is going on? What am I doing wrong? Why is this happening? I am baffled!
>> Any help would be appreciated.
>> Thanks
>> Mike
>>
>>
>>
>>
>>        [[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.



More information about the R-help mailing list