[R] Change in behavior of compare statement

Duncan Murdoch murdoch at stats.uwo.ca
Mon Sep 19 19:40:53 CEST 2005


On 9/19/2005 12:25 PM, Tomas Andersson wrote:
> Dear all, 
> 
> I have come across some Windows Script code which calls the
> "file.exists" function in R to check for the existence of a particular
> file on an R server. This is what the code looks like:
> 
>             do
>             {
>                         // some useful code
>             }
>             while (m_workspace.session.eval("file.exists(" + dataFile
> + ")") != "1");

What is this function m_workspace.session.eval?  It's not a base 
function.  Perhaps its definition has changed?
> 
> It appears that the behavior of this code is different when used with
> R version 2.1.1 compared to R version 1.9.1. If the compare statement
> s is changed from
> 
>             while (s != "1")
> to
>             while (s != "True")
> or
>             while !(s)
> 
> the behavior of the code is the same with both versions of R.
> 
> After reading the R documentation, I have not found any evidence that
> the original syntax (s != "1") is in any way recommended or supported
> (in version 2.1.1). Still, my questions are:

s != "1" is perfectly valid R code.  It will evaluate to TRUE in at 
least the following case:

as.character(s) is not an NA, but isn't "1".

s != "True" will evaluate to TRUE in most cases, unless s happens to 
contain that exact string.
> 
> 1. Is it possible that the syntax has been supported in older versions of R?
> 2. Is the reason for the recent change in behavior known and
> documented anywhere?

The syntax is fine, but it looks like a behaviour change in that 
function m_workspace.session.eval.  You'll need to ask the author of 
that function what is happening.

Duncan Murdoch




More information about the R-help mailing list