问题
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.
回答1:
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.
回答2:
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
来源:https://stackoverflow.com/questions/21122912/factorize-a-numeric-variable-with-greek-expression-in-labels-in-r