[Rd] Bug in points.formula (PR#6652)

berwin at maths.uwa.edu.au berwin at maths.uwa.edu.au
Mon Mar 8 09:17:51 MET 2004


Dear all,

I noticed the following bug in points.formula

> library(DAAG)
> data(roller)
> fm <- lm(depression ~ weight, data=roller)
> plot( depression ~ weight, data=roller, type="n")
> abline(fm)
> attach(roller)
> points( depression~weight, subset=1:7)
> points( depression~weight, subset=8:10, col="blue")
Error in if (length(x) == l) x[s] else x : 
	argument is of length zero

This seems to be due to the fact that the data used was attached
before the call and not specified in the call via the "data"
argument.  The following patch seems to fix the problem.

Cheers,

        Berwin

diff -c /home/berwin/lang/R/Courses/3S6/plot.R.orig /home/berwin/lang/R/Courses/3S6/plot.R
*** /home/berwin/lang/R/Courses/3S6/plot.R.orig	Tue Sep  2 23:43:42 2003
--- /home/berwin/lang/R/Courses/3S6/plot.R	Mon Mar  8 16:06:32 2004
***************
*** 312,318 ****
      mf <- eval(m, parent.frame())
      if (!missing(subset)) {
  	s <- eval(m$subset, data, parent.frame())
! 	l <- nrow(data)
  	dosub <- function(x) if (length(x) == l) x[s] else x
  	dots <- lapply(dots, dosub)
      }
--- 312,320 ----
      mf <- eval(m, parent.frame())
      if (!missing(subset)) {
  	s <- eval(m$subset, data, parent.frame())
!         mtmp <- m
!         mtmp$subset <- NULL
! 	l <- nrow(eval(mtmp, parent.frame()))
  	dosub <- function(x) if (length(x) == l) x[s] else x
  	dots <- lapply(dots, dosub)
      }



--please do not edit the information below--

Version:
 platform = i686-pc-linux-gnu
 arch = i686
 os = linux-gnu
 system = i686, linux-gnu
 status = 
 major = 1
 minor = 8.1
 year = 2003
 month = 11
 day = 21
 language = R

Search Path:
 .GlobalEnv, roller, package:DAAG, package:methods, package:ctest, package:mva, package:modreg, package:nls, package:ts, Autoloads, package:base



More information about the R-devel mailing list