迭代字符串R的字符

Luk*_*asz 12 string iteration for-loop r char

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

numberstring <- "0123456789"

for (number in numberstring) {
  print(number)
}
Run Code Online (Sandbox Code Playgroud)

字符串不是字符数组吗?什么方式在R中做到这一点?

Sve*_*ein 24

在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"
Run Code Online (Sandbox Code Playgroud)

  • R的另一个实例使事情变得不必要地复杂 (3认同)

Ric*_*ven 6

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

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"
Run Code Online (Sandbox Code Playgroud)