【问题标题】:Get indexes of unique values in a vector获取向量中唯一值的索引
【发布时间】:2020-03-26 19:48:02
【问题描述】:

我有一个这样的向量。

filenames <- c("kisyu2_mst.csv", "kisyu3_mst.csv", "kisyu2_mst.csv",
               "kisyu3_mst.csv", "kisyu3_mst.csv")

我需要从文件名向量中获取每个唯一值的索引。输出看起来像这样

对于"kisyu2_mst.csv" 索引向量c(1,3)
对于"kisyu3_mst.csv" 索引向量c(2,4,5)

最后,我需要将它插入到这样的列表中:

final <- list("kisyu2_mst.csv" = c(1,3), "kisyu3_mst.csv"=c(2,4,5))

如何从向量中获取唯一值的索引?

【问题讨论】:

    标签: r vector unique indices


    【解决方案1】:

    我们可以使用tapply

    tapply(seq_along(filenames), filenames, FUN  = I)
    #$kisyu2_mst.csv
    #[1] 1 3
    
    #$kisyu3_mst.csv
    #[1] 2 4 5
    

    【讨论】:

      【解决方案2】:

      我们可以试试which:

      sapply(unique(filenames), function(i) which(filenames %in% i))
      # $kisyu2_mst.csv
      # [1] 1 3
      # 
      # $kisyu3_mst.csv
      # [1] 2 4 5
      

      【讨论】:

        【解决方案3】:

        我们可以使用split

        split(seq_along(filenames), filenames)
        
        #$kisyu2_mst.csv
        #[1] 1 3
        
        #$kisyu3_mst.csv
        #[1] 2 4 5
        

        【讨论】:

        • 这行得通。谢谢@Ronak,你能解释一下 seq_along 在这里做什么吗?
        • @RajithThennakoon seq_along1:length(filenames) 生成序列
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-02
        相关资源
        最近更新 更多