[R] cannot coerce class '"rle"' into a data.frame
R. Michael Weylandt
michael.weylandt at gmail.com
Tue Oct 16 23:21:53 CEST 2012
On Tue, Oct 16, 2012 at 7:07 PM, Marc Schwartz <marc_schwartz at me.com> wrote:
> On Oct 16, 2012, at 12:54 PM, Sam Steingold <sds at gnu.org> wrote:
>
>> why?
>>
>>> rle
>> Run Length Encoding
>> lengths: int [1:1650061] 2 2 8 2 4 5 6 3 26 46 ...
>> values : chr [1:1650061] "4bbf9e94cbceb70c BG bg" "4fbbf2c67e0fb867 SK sk" ...
>>> as.data.frame(rle)
>> Error in as.data.frame.default(vertices.rle) :
>> cannot coerce class '"rle"' into a data.frame
>>
>> it seems that
>>
>> rle.df <- data.frame(values=rle$values,length=rle$length)
>>
>> works and DTRT.
>
>
>
> It is telling you that there is not an as.data.frame() method for objects of class 'rle':
Or just write one for general use:
as.data.frame.rle <- function(x, ...) do.call(data.frame, x)
I'd imagine the reason it doesn't already exist (since it is pretty
transparent in this case) is simply because no one has never thought
it was particularly necessary and the design of
as.data.frame.default() reflects that it's better to fail loudly and
early rather than hoping it will do the right thing when a specific is
not supplied.
Cheers,
Michael
>
> x <- rev(rep(6:10, 1:5))
>
> RES <- rle(x)
>
>> str(RES)
> List of 2
> $ lengths: int [1:5] 5 4 3 2 1
> $ values : int [1:5] 10 9 8 7 6
> - attr(*, "class")= chr "rle"
>
>
> Since 'RES' is a list with a class attribute, you can unclass() it and then coerce to a data.frame:
>
>> as.data.frame(unclass(RES))
> lengths values
> 1 5 10
> 2 4 9
> 3 3 8
> 4 2 7
> 5 1 6
>
>> str(as.data.frame(unclass(RES)))
> 'data.frame': 5 obs. of 2 variables:
> $ lengths: int 5 4 3 2 1
> $ values : int 10 9 8 7 6
>
>
> Regards,
>
> Marc Schwartz
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list