использование математической аннотации как фактора в R
Я ссылаюсь на мой предыдущий вопрос , и хочу узнать больше о характеристиках 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 ответа:
Я не вижу никаких аргументов уровней в ggplot и присвоение
levels
вектору символов не должно работать. Если вы пытаетесь назначить векторы выражений, вы должны просто использовать один вызовexpression
и отделить аргументы запятыми, и вы должны использовать аргумент labels в функции масштаба: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
Я бы просто оставил их в виде символьных строк
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)
Выражение
Используется для генерации текста для графиков и вывода, но не может быть именами переменных как таковыми. Вам придется использовать команду
axis()
для создания собственных меток. Потому что он может оценивать выражения, которые вы могли бы попробовать...plot(temp, xaxt = 'n') s <- paste('x>', 1:5, sep = '=') axis(1, 1:5, parse(text = s))