a <- factor(2:4, labels=c("a", "b", "c"))
a
## [1] a b c
## Levels: a b c
as.numeric(a)
## [1] 1 2 3
我想删除标签并获取数值2,3,4,但as.numeric(a)
的结果为1 2 3
。不要告诉我答案是as.numeric(a) + 1
。谢谢。
答案 0 :(得分:4)
由于您没有为为什么提供任何更广泛的背景信息,因此以下内容只是猜测可能有用的内容:
a<-factor(2:4, labels=c("a", "b", "c"))
> names(a) <- as.character(2:4)
> a
2 3 4
a b c
Levels: a b c
> as.integer(names(a))
[1] 2 3 4
我不能说我之前曾经使用过“命名因素”,坦白说这个概念对我来说有些奇怪。
如果你真的不想要一个因素,那么只需做:
a <- 2:4
names(a) <- letters[1:3]
可能就足够了。
答案 1 :(得分:1)
如果要更改因子的级别,只需使用:
levels(a) <- c("a"=2,"b"=3,"c"=4)
给出:
> a
[1] 2 3 4
Levels: 2 3 4
@joran在答案中表示,使用names
也可以。但是,在我看来,没有特别需要使用as.character
:
names(a) <- 2:4
给出:
> a
2 3 4
a b c
Levels: a b c
此外,您可以使用as.integer
作为@joran显示。
使用names
参数为值指定名称。 levels
参数仅用于因子变量。
例如,当您将矢量设置为:
时a <- 2:4
names(a) <- letters[1:3]
使用levels(a)
,提供:NULL
将矢量设置为:
a <- 2:4
levels(a) <- c("ab","bc","cd")
使用names(a)
,提供:NULL
答案 2 :(得分:0)
我写了一个名为“lfactors”的软件包,你可能会在这里欣赏
app\tests\fixtures
它还有其他你喜欢的功能
a <- lfactor(2:4,levels=2:4, labels=c("a", "b", "c"))
a
# [1] a b c
# Levels: a b c
# Numeric levels: 2 3 4
as.numeric(a)
# [1] 2 3 4