【问题标题】:How to create an indexed vector base on another vector?如何基于另一个向量创建索引向量?
【发布时间】:2014-04-17 09:59:58
【问题描述】:

我正在尝试基于另一个向量创建索引向量。这是源向量:

a <- c("A", "A", "B", "C", "D", "E", "E", "E")

生成的索引向量应如下所示:

x <- c(1, 2, 1, 1, 1, 1, 2, 3)

我试过了,但这并没有产生正确的结果:

a <- c("A", "A", "B", "C", "D", "E", "E", "E")
rle.a <- rle(a)
m <- max(rle.a$lengths)
rep(1:m, each=rle.a$lengths)

如何进行?

【问题讨论】:

    标签: r seq rep


    【解决方案1】:

    我找到了解决办法:

    a <- c("A", "A", "B", "C", "D", "E", "E", "E")
    rle.a <- rle(a)
    sequence(rle.a$lengths)
    

    【讨论】:

    • 另见ave(a, a, FUN = seq_along)
    • 这两种方法略有不同,ave 一种将使c("a","b","a") 变为 c(1,2,2) - 原始的最后一个元素是'a'的第二次全局出现- 但rle 方法将给出c(1,2,1),因为最终元素是它自己运行的第一个元素/
    • @jrara,您也可以接受自己的答案,以表明问题已得到解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 2020-08-08
    • 2019-05-24
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多