Ricardo, 

Thanks for your reply. Yes, the question comes down to: is it better to retain 
the type of the first input or the most general input? Even if 1 data.table has 
a factor input, is it better to retain "factor" instead of "character"? If one 
of them has a numeric column, then is it better to retain numeric even if the 
first data.table has integer column?

And if the first data.table through a division operation yielded integers, then 
this'll cause an issue, unless one manually typesets. data.table is consistent, 
alright. But maybe a "warning" or a "message" would be nice. 

Arun


On Sunday, July 28, 2013 at 5:39 AM, Ricardo Saporta wrote:

> Arun, 
> 
> Im pretty sure `rbindlist` identifies column class based on the first 
> argument.   
> 
> compare 
>   rbindlist(list(DT2, DT1))
> 
>   rbindlist(list(DT1, DT2))
> 
> 
> 
> I agree with you though that a more ideal behavior would be one that mimics 
> `c( )`
> 
> 
> -Rick 
> 
> On Sat, Jul 27, 2013 at 3:07 PM, Arunkumar Srinivasan <[email protected] 
> (mailto:[email protected])> wrote:
> > Hi all, 
> > 
> > Here's a behaviour of `rbindlist` that I came across that I think is 
> > undesirable. If the columns to be "rbind" are of type "integer" and 
> > "numeric", then, the class "integer" is retained which results in different 
> > results than intended. 
> > 
> > require(data.table)
> > DT1 <- data.table(x = 1:5, y = 1:5)
> >    x y
> > 1: 1 1
> > 2: 2 2
> > 3: 3 3
> > 4: 4 4
> > 5: 5 5
> > 
> > 
> > DT2 <- data.table(x = 6:10, y = 1:5/10)
> >     x   y
> > 1:  6 0.1
> > 2:  7 0.2
> > 3:  8 0.3
> > 4:  9 0.4
> > 5: 10 0.5
> > 
> > 
> > sapply(DT1, class) 
> >         x         y 
> > "integer" "integer" 
> > 
> > 
> > sapply(DT2, class)
> >         x         y 
> > "integer" "numeric" 
> > 
> > 
> > rbindlist(list(DT1, DT2)) 
> >      x y
> >  1:  1 1
> >  2:  2 2
> >  3:  3 3
> >  4:  4 4
> >  5:  5 5
> >  6:  6 0 <~~~~ from here, the result should be 0.1 to 0.5 for the next 5 
> > rows or y.
> >  7:  7 0
> >  8:  8 0
> >  9:  9 0
> > 10: 10 0
> > 
> > 
> > Is this behaviour unexpected or we've to manually take care of this? Seems 
> > more proper to be taken care of internally to me though. 
> > 
> > Best,
> > Arun.
> > 
> > 
> > _______________________________________________
> > datatable-help mailing list
> > [email protected] 
> > (mailto:[email protected])
> > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
> 

_______________________________________________
datatable-help mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help

Reply via email to