【问题标题】:Iterating over characters of string R遍历字符串 R 的字符
【发布时间】:2014-12-30 12:40:42
【问题描述】:

有人可以解释一下为什么这不会在 R 中单独打印所有数字。

numberstring <- "0123456789"

for (number in numberstring) {
  print(number)
}

字符串不只是字符数组吗?在 R 中怎么做?

【问题讨论】:

    标签: r string for-loop char iteration


    【解决方案1】:

    这是一种使用for 循环和substring 迭代字符串的简单方法。这并不比常见情况的现有答案更好,但如果您想尽早跳出循环而不是总是预先遍历整个字符串,它可能会很有用,如str_split/scan/@ 987654325@/regmatches 需要。

    s <- "0123456789"
    
    if (s != "") {
      for (i in 1:nchar(s)) {
        print(substring(s, i, i))
      }
    }
    

    【讨论】:

      【解决方案2】:

      tidyverse::str_split 可能

      numberstring <- "0123456789"
      str_split(numberstring,boundary("character"))
      
      1. '0''1''2''3''4''5''6''7''8''9'
      

      【讨论】:

        【解决方案3】:

        您的问题对于期望的结果不是 100% 清楚(从字符串中单独打印每个字符,或者以给定的打印循环将导致每个数字在其自己的行上生成的方式存储每个数字)。 要存储 numberstring 以便使用包含的循环打印:

        numberstring<-c(0,1,2,3,4,5,6,7,8,9)
        for(number in numberstring){print(number);}
        
        [1] 0
        [1] 1
        [1] 2
        [1] 3
        [1] 4
        [1] 5
        [1] 6
        [1] 7
        [1] 8
        [1] 9
        > 
        

        【讨论】:

        • 我认为您没有理解这个问题。请查看其他答案
        【解决方案4】:

        只是为了好玩,这里有一些其他方法可以在每个字符处拆分字符串。

        x <- "0123456789"
        substring(x, 1:nchar(x), 1:nchar(x))
        # [1] "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
        regmatches(x, gregexpr(".", x))[[1]]
        # [1] "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" 
        scan(text = gsub("(.)", "\\1 ", x), what = character())
        # [1] "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
        

        【讨论】:

          【解决方案5】:

          在R中"0123456789"是一个长度为1的字符向量。

          如果要遍历字符,则必须将字符串拆分为 使用 strsplit 的单个字符向量。

          numberstring <- "0123456789"
          
          numberstring_split <- strsplit(numberstring, "")[[1]]
          
          for (number in numberstring_split) {
            print(number)
          }
          # [1] "0"
          # [1] "1"
          # [1] "2"
          # [1] "3"
          # [1] "4"
          # [1] "5"
          # [1] "6"
          # [1] "7"
          # [1] "8"
          # [1] "9"
          

          【讨论】:

          • R 的另一个实例使一些不必要的复杂化
          猜你喜欢
          • 1970-01-01
          • 2018-05-15
          • 1970-01-01
          • 2012-07-29
          • 1970-01-01
          • 2011-08-27
          相关资源
          最近更新 更多