From ripley at stats.ox.ac.uk  Tue Jul 22 18:10:34 2003
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Tue Jul 22 18:10:41 2003
Subject: [Rd] read.table with option dec=',' (PR#3532)
In-Reply-To: <200307221527.h6MFR1JH027167@pubhealth.ku.dk>
Message-ID: <Pine.LNX.4.44.0307221708110.19749-100000@gannet.stats>

x[<length-0>] <- list()

is intended to work, and did at one point in R-devel.  Unfortunately I 
added (p:1) at one point since ... it works again now.

On Tue, 22 Jul 2003 tplate@blackmesacapital.com wrote:

> The problem appears to occur in the following expression from write.table():
> 
>     x[num] <- lapply(x[num], function(z) gsub("\\.", ",",as.character(z)))
> 
> which gives an error when 'num' has length zero (for what it's worth, the 
> RHS evaluated to list()).
> 
> The error reported occurs when dec= is supplied to write.table() and the 
> table has no numeric columns.
> 
> Data frame column assignment does not appear able to handle the case where 
> the index has zero length, as in the following example
> 
>  > x <- data.frame(x="1.5")
>  > num <- numeric(0)
>  > x[num] <- list()
> Error in if (n%%nrowv == 0) value <- value[rep(1:nrowv, length = n), ,  :
>          missing value where TRUE/FALSE needed
> In addition: Warning messages:
> 1: no finite arguments to min; returning Inf
> 2: no finite arguments to max; returning -Inf
>  > traceback()
> 2: "[<-.data.frame"(*tmp*, num, value = list())
> 1: "[<-"(*tmp*, num, value = list())
>  >
> 
> Possible fixes are to either guard the expression in write.table() with 'if 
> (length(num))' or to change "[<-.data.frame"() to handle this case.
> 
> (I note that S-plus 6.1 under Windows and R1.6.2 under Windows also 
> generate an error with this type of data frame assignment, so it does not 
> appear to be a new bug with data frame assignment, and is probably best 
> fixed with the simple change to write.table())
> 
> -- Tony Plate
> 
> At Tuesday 03:29 PM 7/22/2003 +0200, lucas@toulouse.inra.fr wrote:
> >Full_Name: Antoine Lucas
> >Version: 1.7.0  (2003-04-16)
> >OS: Linux
> >Submission from: (NULL) (193.51.197.253)
> >
> >
> >I have a problem using read.table:
> >
> >If in a dataframe, we have a string containing a dot, write.table
> >will not write any file while using option "dec=','".
> >
> >Example
> >
> > > m <- "1.5"
> > > write.table(m,dec=',')
> >Error in if (n%%nrowv == 0) value <- value[rep(1:nrowv, length = n), ,  :
> >         missing value where TRUE/FALSE needed
> >In addition: Warning messages:
> >1: no finite arguments to min; returning Inf
> >2: no finite arguments to max; returning -Inf
> >
> >Whereas the contrary write the table:
> > > m <- "1,5"
> > > write.table(m,dec='.')
> >"x"
> >"1" "1,5"
> >
> >
> >Best regards
> >
> >Antoine Lucas
> >
> >--
> >Antoine  Lucas
> >INRA, Unit? de biom?trie et     |  Tel 05 61 28 53 34
> >intelligence artificielle       |  Fax 05 61 28 53 35
> >http://genopole.toulouse.inra.fr/~lucas
> >
> >______________________________________________
> >R-devel@stat.math.ethz.ch mailing list
> >https://www.stat.math.ethz.ch/mailman/listinfo/r-devel
> 
> ______________________________________________
> R-devel@stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-devel
> 
> 

-- 
Brian D. Ripley,                  ripley@stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595


[Rd] read.table with option dec=',' (PR#3532)
Prof Brian Ripley