Iterating over characters of string R

前端 未结 4 884
一整个雨季
一整个雨季 2021-02-19 10:24

Could somebody explain me why this does not print all the numbers separately in R.

numberstring <- \"0123456789\"

for (number in numberstring) {
  print(num         


        
相关标签:
4条回答
  • 2021-02-19 10:39

    Your question is not 100% clear as to the desired outcome (print each character individually from a string, or store each number in a way that the given print loop will result in each number being produced on its own line). To store numberstring such that it prints using the loop you included:

    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
    > 
    
    0 讨论(0)
  • 2021-02-19 10:48

    Possible with tidyverse::str_split

    numberstring <- "0123456789"
    str_split(numberstring,boundary("character"))
    
    1. '0''1''2''3''4''5''6''7''8''9'
    
    0 讨论(0)
  • 2021-02-19 10:50

    Just for fun, here are a few other ways to split a string at each character.

    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"
    
    0 讨论(0)
  • 2021-02-19 10:53

    In R "0123456789" is a character vector of length 1.

    If you want to iterate over the characters, you have to split the string into a vector of single characters using 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"
    
    0 讨论(0)
提交回复
热议问题