【问题标题】:Negative value for factor in R?R中因子的负值?
【发布时间】:2014-10-24 14:40:43
【问题描述】:

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

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

【问题讨论】:

  • 不,因子在设计上使用正整数代码。
  • 如果你这样做,我认为你会超载一个因素水平的含义。

标签: r


【解决方案1】:

您可以设置负面标签,但也许不能设置级别:

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

【讨论】:

    猜你喜欢
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 2018-12-07
    相关资源
    最近更新 更多