[datatable-help] Way too many alloc.col warnings?

Matthew Dowle mdowle at mdowle.plus.com
Tue Jan 17 16:57:40 CET 2012


Oops, no it shouldn't be doing that. It is doing the right thing, because
it does always over-allocate all the time, but the warning is happening
too much.  Setting  options(datatable.allocwarn=FALSE) should make it
quiet for now until I fix that. Thanks.
Matthew


> Hi all,
>
> I have the latest SVN version installed, and I am trying to run the
> original crash code me and Matthew came up with, and it all looks fine
> (no crashes), except I'm surprised by the number of allocwarns I get.
> Every single line I get multiple warnings from alloc.col.
>
> Should an alloc warning happen when first creating a data.table? Even
> the initial creation of the code warns:
>> N=100000
>> dat=data.table(k1=factor(1:N), d1=rpois(N, 100), d2=rpois(N, 10),
>>   d3=rgamma(N,10, .001), d4=rgamma(N,1, .001), d5=rgamma(N,100,.001),
>>   d6=rgamma(N, 200, .001))
>
> Warning message:
> In alloc.col(value) :
>   growing vector of column pointers from 7 to 1000. Only a shallow
> copy has been taken, see ?alloc.col. Only a potential issue if two
> variables point to the same data (we can't yet detect that well) and
> if not you can safely ignore this warning. To avoid this warning you
> could alloc.col() first, deep copy first using copy(), wrap with
> suppressWarnings() or increase the 'datatable.alloccol' option.
>
>
> I have alloccol=1000 in the options now so that number makes sense,
> but I thought it was supposed to start initialized to that number.
> Also, every single line like:
>
> dat[,d11:=d2/d5]
>
> Causes two more warnings:
>
> Warning messages:
> 1: In alloc.col(ans) :
>   growing vector of column pointers from 2 to 1000. Only a shallow
> copy has been taken, see ?alloc.col. Only a potential issue if two
> variables point to the same data (we can't yet detect that well) and
> if not you can safely ignore this warning. To avoid this warning you
> could alloc.col() first, deep copy first using copy(), wrap with
> suppressWarnings() or increase the 'datatable.alloccol' option.
> 2: In alloc.col(ans) :
>   growing vector of column pointers from 12 to 1000. Only a shallow
> copy has been taken, see ?alloc.col. Only a potential issue if two
> variables point to the same data (we can't yet detect that well) and
> if not you can safely ignore this warning. To avoid this warning you
> could alloc.col() first, deep copy first using copy(), wrap with
> suppressWarnings() or increase the 'datatable.alloccol' option.
>
>
> It seems to me either the warning is borked or the alloccol isn't
> doing what it should?  The options I have set are:
>
> options(datatable.alloccol=1000)
> options(datatable.allocwarn=TRUE)
> options(datatable.verbose=TRUE)
> _______________________________________________
> datatable-help mailing list
> datatable-help at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help
>




More information about the datatable-help mailing list