[R] cannot coerce class '"rle"' into a data.frame
Marc Schwartz
marc_schwartz at me.com
Tue Oct 16 20:07:58 CEST 2012
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':
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
More information about the R-help
mailing list