R中因子的负值?

时间:2014-10-24 14:40:43

标签: r

我试图创建一个因子变量,但标签背后有负值。这是不允许的吗?

> 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但是唉...... ]

1 个答案:

答案 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