Как отобразить греческую букву на графике R, когда буква указана в виде строки - PullRequest
3 голосов
/ 21 октября 2011

Я хочу отобразить греческие буквы на графике R, где буквы - это имена фреймов данных. Например, предположим, у меня есть

dataframe <- read.table("input.dat");
cnames <- colnames(dataframe);
# asssume cnames[1] = "alpha[1]" cnames[2] = "alpha[2]"

Я хочу построить альфа [1] ~ альфа [2], где альфа отображается как греческая буква вместо строк, т.е. как

plot(as.formula(paste(cnames[1],"~",cnames[2])), xlab=expression(cnames[1]) ......)

Однако это не работает, и я не могу найти решение Google. Кто-нибудь знает как это сделать? Этот пример кажется тривиальным, но в моем реальном наборе данных у меня много столбцов, и мне нужно построить несколько случайно выбранных переменных.

Большое спасибо

Ответы [ 2 ]

6 голосов
/ 21 октября 2011

Это работает для вас?

x = "alpha[1]"
plot(1,1, t="n", xlab=parse(text=x))
0 голосов
/ 21 октября 2011

Давайте назовем фрейм данных чем-то отличным от «фрейма данных», возможно, «dfrm». Исходя из контекста, я предполагаю, что вы хотите имена столбцов, а не имя кадра данных:

dfrm <-
structure(list(`alpha[1]` = 1:10, `alpha[2]` = c(10L, 9L, 8L, 
7L, 6L, 5L, 4L, 3L, 2L, 1L)), .Names = c("alpha[1]", "alpha[2]"
), row.names = c(NA, -10L), class = "data.frame")

plot(dfrm[,1],dfrm[,2], 
         xlab=parse(text=names(dfrm)[1]), ylab=parse(text=names(dfrm)[2]) )

Если вам абсолютно необходимо иметь имена, используемые для построения формулы, это не легко, но это можно сделать:

 form <-as.formula(paste(deparse(as.name(names(dfrm)[1]), backtick=T), 
                         "~",
                         deparse(as.name(names(dfrm)[2]), backtick=T) 
                )     )  
form
# `alpha[1]` ~ `alpha[2]`

 plot(form, 
      xlab=parse(text=names(dfrm)[1]), 
      ylab=parse(text=names(dfrm)[2]) ,
      data=dfrm)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...