【问题标题】:Generate a sequence of characters from 'A'-'Z'从'A'-'Z'生成一个字符序列
【发布时间】:2011-05-21 04:19:36
【问题描述】:

我可以制作一个这样的数字序列:

s = seq(from=1, to=10, by=1)

如何从 A-Z 创建一个字符序列?这不起作用:

seq(from=1, to=10)

【问题讨论】:

    标签: r character ascii sequence seq


    【解决方案1】:

    LETTERS 返回 A-Z

    以生成 A-E 为例

    大写:

    > LETTERS[1:5]
    

    小写

    letters[1:5]
    

    【讨论】:

      【解决方案2】:

      R.oo 包有一个 intToChar 函数,它使用 ASCII 值,如果 LETTERSletters 没有任何好处。 A 在 ASCII 中是 65:

      > require(R.oo)
      > intToChar(65:79)
       [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O"
      

      或者您可以使用最低 unicode 数字是 ascii 的事实,因此在 R-base 中是 intToUtf8,如下所示:

      > intToUtf8(65:78,multiple=TRUE)
       [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N"
      

      或使用rawToChar:

      > rawToChar(as.raw(65:78))
      [1] "ABCDEFGHIJKLMN"
      

      【讨论】:

        【解决方案3】:

        只需使用预定义变量lettersLETTERS

        为了完整起见,这里使用seq

        R> rawToChar(as.raw(seq(as.numeric(charToRaw('a')), as.numeric(charToRaw('z')))))
        [1] "abcdefghijklmnopqrstuvwxyz"
        R> 
        

        【讨论】:

          【解决方案4】:

          使用letters 和/或LETTERS 的代码:

          > LETTERS[seq( from = 1, to = 10 )]
           [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J"
          > letters[seq( from = 1, to = 10 )]
           [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
          

          【讨论】:

          • 或者只是字母[1:10]
          【解决方案5】:

          使用LETTERSletters(分别表示大写和小写)。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-10-01
            • 2014-11-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多