迭代字符串R的字符

时间:2014-11-03 19:15:17

标签: r string for-loop char iteration

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

numberstring <- "0123456789"

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

字符串不是字符数组吗?什么方式在R?

4 个答案:

答案 0 :(得分:22)

在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"

答案 1 :(得分:5)

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

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"

答案 2 :(得分:0)

您的问题并非100%明确所需的结果(从字符串中单独打印每个字符,或以给定打印循环将导致每个数字在其自己的行上生成的方式存储每个数字)。 要存储数字字符串,以便使用包含的循环进行打印:

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
> 

答案 3 :(得分:0)

可能与tidyverse :: str_split

numberstring <- "0123456789"
str_split(numberstring,boundary("character"))

1. '0''1''2''3''4''5''6''7''8''9'