【问题标题】:How to get the index of a letter from a list A-Z?如何从列表 A-Z 中获取字母的索引?
【发布时间】:2011-01-28 07:25:50
【问题描述】:

我想获取特定字母的索引,例如

>  match(LETTERS,"G")
 [1] NA NA NA NA NA NA  1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

告诉我该字母存在,但我希望它在这种情况下为列表的第 6 个元素返回 6。

【问题讨论】:

    标签: r indexing letters


    【解决方案1】:

    只是为了通知:我想你想要

    match("G", LETTERS)
    # [1] 7
    

    grepwhich 相比,此解决方案的好处是您可以在字母向量上使用它:

    match(c("S","T","A","C","K","O","V","E","R","F","L","O","W"), LETTERS)
    # gives:
    # [1] 19 20  1  3 11 15 22  5 18  6 12 15 23
    

    【讨论】:

      【解决方案2】:

      which:

      which(LETTERS=="G")
      

      which 函数专为此目的而设计:

      给出逻辑的“TRUE”索引 对象,允许数组索引。

      which 函数还可以通过将 arr.ind 参数设置为 TRUE 来返回矩阵中逻辑 TRUE 值的索引(这非常有用)。

      > which(matrix(LETTERS, nrow=5)=="G")
      [1] 7
      > which(matrix(LETTERS, nrow=5)=="G", arr.ind=TRUE)
           row col
      [1,]   2   2
      

      您可能还想阅读this recent blog post from Seth Falcon,他谈到了用 C 优化它。

      【讨论】:

        【解决方案3】:

        试试grep:

        R> grep("G", LETTERS)
        [1] 7
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-04
          • 2021-05-05
          • 2020-12-01
          • 1970-01-01
          • 2012-04-10
          相关资源
          最近更新 更多