【问题标题】:Tail function on factor in R [duplicate]R中因子的尾函数[重复]
【发布时间】:2015-10-17 11:04:12
【问题描述】:

我看过这篇文章 (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)。我可以看到 a[1] 是 4 但是:

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

我查看了?tail,但似乎无法弄清楚。我知道这一定很简单,我只需要朝着正确的方向轻推。谢谢

【问题讨论】:

  • 使用droplevelsdroplevels(a) 或再次调用factorfactor(a) 以仅获取a 中存在的级别并删除未使用的级别。
  • 哦,谢谢,所以我现在可以将它存储为变量。 ..似乎无法选择您的评论作为答案。
  • 没问题。这是因为我没有将其发布为答案。
  • 对不起@akrun 我没有看到你已经把它作为评论发布了。如果你想发表你的评论作为答案,我会删除我的。
  • @RHertel 承认!! :)

标签: r


【解决方案1】:

你可以使用factor(a)

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

【讨论】:

    【解决方案2】:

    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
    

    【讨论】:

    • 只是一个小评论,factor 级别不仅打印出来,而且它们实际上也存储在那里,attributes(tail(f)) 将显示。
    猜你喜欢
    • 2012-09-12
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    相关资源
    最近更新 更多