Hi Kostia,

I think that you already have a column named "percent" that has type
"character". When you use "format", the result is a character, for
example...

If so -- use str(data) to check -- you'll need to delete it first, using
data[,percent:=NULL].

If you're confused about how data.tables work and what they are useful for
(...which I think might be the case based on your conversion to a
data.frame and use of format), you might want to go through the vignettes
and other resources here: http://datatable.r-forge.r-project.org/

Best,

Frank


On Thu, Aug 29, 2013 at 9:57 AM, Kostia Kofman <[email protected]> wrote:

> This is the error I receive trying "BlaBla" instead of list(BlaBla)
>
>
> Error in `[.data.table`(data, , `:=`(percent, sum(freq)), by = byWhat) :
>   Type of RHS ('integer') must match LHS ('character'). To check and coerce 
> would impact performance too much for the fastest cases. Either change the 
> type of the target column, or coerce the RHS of := yourself (e.g. by using 1L 
> instead of 1)
>
>
>
> On Thu, Aug 29, 2013 at 5:44 PM, Frank Erickson <[email protected]> wrote:
>
>> Try "BlaBla" instead of list(BlaBla)
>>
>> (oops, forgot to reply to the mailing list the first time I sent this.
>> Sorry for the double email, Kostia.)
>>
>>
>> On Thu, Aug 29, 2013 at 9:36 AM, Kostia Kofman <[email protected]> wrote:
>>
>>> Hi,
>>>
>>> I'm new to R and data.table and having some difficulties with a certain
>>> function that I wrote.
>>>
>>> the function code:
>>>
>>> freq_per = function(data,byWhat,month){
>>>     for (i in 1:length(month)){
>>>         data = data.table(data)
>>>         data[,percent :=sum(freq),by = byWhat]
>>>         data[,percent := (freq/percent)*100]
>>>         data = data.frame(data)
>>>         data$percent = format(round(data$percent),nsmall = 2)
>>>     }
>>>     data
>>>
>>> }
>>>
>>> I have tried to call the function with freq_per(data,list(BlaBla),month)
>>> and get the error message from the topic.
>>>
>>> I have tried to create a global variable with byWhat = list(BlaBla), it
>>> didn't work because the object 'BlaBla' not found.
>>>
>>> I also tried to use keyby instead of by with  c(colnames(data)[1]), but
>>> the results that I got are not right.
>>>
>>> anybody has an idea how to overcome the problem?
>>>
>>> Thanks.
>>>
>>>
>>>
>>> _______________________________________________
>>> datatable-help mailing list
>>> [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