From bolker at zoo.ufl.edu  Mon Sep 10 14:47:18 2007
From: bolker at zoo.ufl.edu (Ben Bolker)
Date: Mon, 10 Sep 2007 08:47:18 -0400
Subject: [Rd] [Fwd: buglet (?) in de.restore()]
Message-ID: <46E53CD6.8020808@zoo.ufl.edu>


  I'm resending this after a decent interval of 20 days -- any
opinions?  Should I file it as a bug report?  Is it my mistake?

  cheers
    Ben Bolker


-------- Original Message --------
Subject: 	buglet (?) in de.restore()
Date: 	Tue, 21 Aug 2007 13:29:33 -0400
From: 	Ben Bolker <bolker at zoo.ufl.edu>
To: 	r-devel at r-project.org



  If one calls data.entry() with a matrix:

A = matrix(0,2,2)
data.entry(A)

everything works fine except that it triggers a warning:

Warning message:
the condition has length > 1 and only the first element will be used in:
  if (dim(x) == dim(args[[i]])) rn <- dimnames(args[[i]])[[1]] else rn 
<- NULL

This is triggered by the following lines in de.restore() [in 
src/library/utils/R/de.R]:
>   if( dim(x) == dim(args[[i]]) )
>                 rn <- dimnames(args[[i]])[[1]]
>             else rn <- NULL
  It would seem to make sense to replace the condition with

if (nrow(x) == nrow(args[[i]]))

  (de.restore() is only called if an element of the list passed to 
data.entry
has more than one column)

 On a side note, I'm curious why

> > A = matrix(0,2,2)
> > is.vector(A)
> [1] FALSE
> > is(A,"vector")
> [1] TRUE
 ...

------------------
sessionInfo()
R version 2.5.1 (2007-06-27)
i486-pc-linux-gnu

locale:
LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=en_US.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=C

attached base packages:
[1] "stats"     "graphics"  "grDevices" "utils"     "datasets"  "methods" 
[7] "base"



[Rd] [Fwd: buglet (?) in de.restore()]
Ben Bolker