Change in behavior of compare statement
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