Question

Suppose the following data frame, I want to factorized var, and label numbers to Greek letters, from 1 to alpha, 2 to beta, 3 to gamma. But the following code does not work.

var<-c(1,1,2,2,3,3)
df<-as.data.frame(var)
df$var<-factor(df$var, levels=c(1,2,3),
               labels=c("1"=expression(alpha),
                        "2"=expression(beta),
                        "3"=expression(gamma)))

Why the final data frame is not greek letters but just text expressions? Can anyone help me on this? Thanks a lot.

Was it helpful?

Solution

Does your locale support these characters? Does '\u03b1' print an alpha character? If not, you'll need to change your encoding. E.g.,

Sys.setlocale('LC_CTYPE', 'greek')

Then replace your calls to expression with the unicode strings for alpha, beta, etc.

df$var<-factor(df$var, levels=c(1,2,3),
               labels=c("1"='\u03b1',
                        "2"='\u03b2',
                        "3"='\u03b3'))

The way you're using expression is only valid for plots. Unless you really need to have Greek letters in your factor, I suggest using the words 'alpha', 'beta', etc. until it's time to plot.

OTHER TIPS

df$var=factor(var,labels=c('alpha','beta','gamma'))

This produces a dataframe with the 1,2,3 transformed into alpha, beta, gamma. Hope this is what you were looking for

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top