использование математической аннотации как фактора в R - PullRequest
3 голосов
/ 22 сентября 2011

Я ссылаюсь на мой предыдущий вопрос и хочу узнать больше о характеристиках factor в R.

Допустим, у меня есть такой набор данных:

temp <- data.frame(x=letters[1:5],
                   y=1:5)
plot(temp)

Я могу легко поменять метку x на другой символ:

levels(temp[,"x"]) <- letters[6:10]

Но если я хочу изменить его на какой-то expression

levels(temp[,"x"]) <- c(expression(x>=1),
                        expression(x>=2),
                        expression(x>=3),
                        expression(x>=4),
                        expression(x>=5))

Знак >= не изменится соответственно на графике. И я обнаружил, что class(levels(temp[,"x"])) - это character, а expression(x>=1) - нет.

Если я хочу добавить математическую аннотацию в качестве фактора, что я могу сделать?

Ответы [ 3 ]

2 голосов
/ 22 сентября 2011

Я бы просто оставил их как строки символов

levels(temp[,"x"]) <- paste("x>=", 1:5, sep="")

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

lev.as.expr <- parse(text=levels(temp[,"x"]))

Для вашего сюжета вы можете сделать:

plot(temp, xaxt="n")
axis(side=1, at=1:5, labels=lev.as.expr)
2 голосов
/ 22 сентября 2011

Я не вижу аргументов уровней в ggplot, и назначение levels символьному вектору не должно работать. Если вы пытаетесь назначить векторы выражений, вы должны просто использовать один вызов expression и разделить аргументы запятыми, а также использовать аргумент меток в функции масштабирования:

 p <- qplot(1:10, 10:1)+ scale_y_continuous( breaks= 1:10, 
                            labels=expression( x>= 1, x>=2, x>=3, x>= 4,x>=5,
                                              x>= 6, x>=7, x>= 8,x>=9, x>= 10) )
 p

enter image description here

0 голосов
/ 22 сентября 2011

Выражение используется для генерации текста для графиков и вывода, но само по себе не может быть именами переменных.Вам нужно будет использовать команду axis() для создания собственных меток.Потому что он может оценивать выражения, которые вы можете попробовать ...

plot(temp, xaxt = 'n')
s <- paste('x>', 1:5, sep = '=')
axis(1, 1:5, parse(text = s))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...