Skip to content

subset: evaluating expressions missing? (PR#6937)

3 messages · martin.lenze@web.de, Brian Ripley, Adaikalavan Ramasamy

#
Full_Name: Martin Lenze
Version: Version 1.9.0  (2004-04-12), ISBN 3-900051-00-3
OS: Microsoft Windows 2000 [Version 5.00.2195] SP4
Submission from: (NULL) (82.83.167.79)


Hello,

now I switched to R 1.9.0 and did get a problem with subset, see sample:

x <- data.frame(a=as.integer(round(runif(5),0)), 
  b=as.integer(round(runif(5),0)),c=as.integer(round(runif(5),0)))
# correct results:
for (c in c(expression(x$a==1),expression(x$b==1),
  expression(x$c==1))) print(x[eval(c),])
# results I don't understand:
for (c in c(expression(x$a==1),expression(x$b==1),
  expression(x$c==1))) print(subset(x,eval(c)))
for (c in c(expression(x$a==1),expression(x$b==1),
  expression(x$c==1))) print(subset(x,c))

Am I doing something wrong? Using subset this way with R 1.8.0 worked fine.

Many thanks in advance
Martin Lenze
#
You should not use the system object `c' as an index! BTW, expression()
takes multiple arguments, so you can do

# OK
for (c2 in expression(x$a==1, x$b==1, x$c==1)) print(x[eval(c2),])
for (c2 in expression(x$a==1, x$b==1, x$c==1)) print(subset(x, eval(c2)))

# error, correctly
for (c2 in expression(x$a==1, x$b==1, x$c==1)) print(subset(x,c2))
Error in r & !is.na(r) : operations are possible only for numeric or logical types
In addition: Warning message:
is.na() applied to non-(list or vector) in: is.na(r)
On Fri, 4 Jun 2004 martin.lenze@web.de wrote:

            
Not for me!  I get the same wrong results as in 1.9.0 with your code.
#
Dear all,

Can I make two suggestions regarding help pages.

1) Reflect the current package version on the help pages. Example
	truehist {MASS v7.1-14} or truehist {MASS}{7.1-14}

2) Put all of the help.start() pages online like www.perldoc.com. I
realise that there exists
   http://www.maths.lth.se/help/R/.R/doc/html/index.html
   http://stat.ethz.ch/R-manual/R-patched/doc/html/index.html
and few others but it would be nice to have it on an official page or
linked from it. It would also be nice to have these pages updated
automatically everytime there is new package or new version release.

Of course 2) may create some confusion if the package version that the
help page was based on is different from the installed version, which is
why 1) should be considered as well.

Thanks. Hope this helps,