我试图创建一个因子变量,但标签背后有负值。这是不允许的吗?
> foo <- sample( -10:-1, 20, replace=T)
> factor( foo, levels=-1:-10 )
[1] -7 -10 -8 -9 -2 -2 -1 -5 -7 -6 -6 -9 -1 -1 -6
[16] -2 -9 -1 -4 -1
Levels: -1 -2 -3 -4 -5 -6 -7 -8 -9 -10
>
> foo2 <- factor( foo, levels=-1:-10, labels=letters[16:25] )
> foo2
[1] v y w x q q p t v u u x p p u q x p s p
Levels: p q r s t u v w x y
价值观是积极的!为什么呢?
> as.numeric( foo2 )
[1] 7 10 8 9 2 2 1 5 7 6 6 9 1 1 6 2 9 1 4 1
[为什么我要这个?我正在使用geom_tile()
创建一个热图,并希望列标签位于图表顶部而不是底部...移动它的解决方案看起来非常复杂:
ggplot2: Adding secondary transformed x-axis on top of plot
而且我认为我可能通过给出负值将图表放在IV象限中来愚弄ggplot但是唉...... ]
答案 0 :(得分:2)
您可以设置否定标签,但可能不是级别:
j = factor("Jack", levels=c("Jack", "Jill", "tumbling", "after"), labels=c(-1,0,1,2))
print(j)
## [1] -1
## Levels: -1 0 1 2
levels(j)
## [1] "-1" "0" "1" "2"
as.integer(levels(j)[as.integer(j)])
## [1] -1
但是,在以正常方式使用as.integer()
或as.numeric()
时,您无法获得预期的价值:
as.numeric(j)
## [1] 1
as.integer(j)
## [1] 1