[Rd] Getting ordered factor levels from C

2012-10-24 Thread Mark Lilback
I'm working on an R package in C and can't seem to get the same level 
information about a factor that the R console displays.

If I define a factor as:

lvls <- factor(c('red','blue','blue','green','red'), c('blue','green','red'), 
ordered=TRUE)

When I get the "levels" attribute in C, I get back the the first vector, not 
the second. If I run attr(lvls,"levels") in R, I get back the second vector. 
There are no attributes besides class and levels, so how do I get the list of 
levels in the correct order?

Thanks

-- 
Mark Lilback
West Virginia University Department of Statistics
mlilb...@stat.wvu.edu

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] Getting ordered factor levels from C

2012-10-24 Thread Mark Lilback
I was banging my head for an hour on this. I just pasted the code into an email 
and see that I was getting the contents of the SEXP for the factor, not the one 
returned by getAttrib. Sorry for the waste of time.


On Oct 24, 2012, at 4:16 PM, Simon Urbanek  wrote:

> 
> On Oct 24, 2012, at 2:14 PM, Mark Lilback wrote:
> 
>> I'm working on an R package in C and can't seem to get the same level 
>> information about a factor that the R console displays.
>> 
>> If I define a factor as:
>> 
>> lvls <- factor(c('red','blue','blue','green','red'), 
>> c('blue','green','red'), ordered=TRUE)
>> 
>> When I get the "levels" attribute in C, I get back the the first vector, not 
>> the second.
> 
> What are you using in C? AFAICS it works just fine:
> 
>> f=cfunction(c(foo="factor"), "return getAttrib(foo, R_LevelsSymbol);")
>> f(lvls)
> [1] "blue"  "green" "red"  
> 



-- 
Mark Lilback
West Virginia University Department of Statistics
mlilb...@stat.wvu.edu

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel