R

时间:2015-07-27 09:56:53

标签: r

我看过这篇文章(How to access the last value in a vector?),展示了如何使用tail函数。当我将tail应用于某个因子时,它会返回该因子的所有级别,包括要显示的最后一个因子。例如:

x = rep(1:4, 6)
y =  rnorm(4*length(x), 0, 0.1)

d = data.frame(ERF=x, y)

d$ERF = factor(d$ERF)

a <- tail(d$ERF, n=1)

> a
[1] 4
Levels: 1 2 3 4

我只想将最后一个因子存储为变量(a)。我可以看到[1]是4但是:

> a[1]
[1] 4
Levels: 1 2 3 4

我看了?tail,但似乎无法弄明白。我知道它必须简单我只需要朝着正确的方向轻推。感谢

2 个答案:

答案 0 :(得分:4)

tail与任何索引函数一样,返回元素。但是,因子的一个因素仍然是一个因素,因此当您打印它时,将打印所有因子级别。

尽管如此,您可以将该值用作任何其他值。如果要使用值本身,请通过as.character将其转换为字符串。

如果您想摆脱所有未使用的因子级别,请使用droplevels

f = factor(letters)

tail(f)
# [1] u v w x y z
# Levels: a b c d e f g h i j k l m n o p q r s t u v w x y z

as.character(tail(f))
# [1] "u" "v" "w" "x" "y" "z"

droplevels(tail(f))
# [1] u v w x y z
# Levels: u v w x y z

答案 1 :(得分:2)

您可以使用factor(a)

> a
[1] 4
Levels: 1 2 3 4
> factor(a)
[1] 4
Levels: 4