Menu
CoddyTech

遍历字符(strsplit)

本课属于 Coddy R 学习旅程的“基础知识”单元。第 65 课,共 78 课。

如果你需要逐个处理字符串中的每个字符,该怎么办?与向量不同,在 R 中,你不能直接用循环遍历字符串中的字符。strsplit() 函数可以解决这个问题,它会将字符串拆分为由字符组成的向量。

strsplit() 函数接收两个参数:要拆分的字符串和分隔符。要拆分成单个字符,请使用空字符串 "" 作为分隔符:

word <- "hello"
chars <- strsplit(word, "")[[1]]
print(chars)

输出:

[1] "h" "e" "l" "l" "o"

注意末尾的 [[1]]。这是因为 strsplit() 返回一个列表,我们需要提取第一个元素,才能得到字符向量。将字符转换为向量后,你就可以使用已经学过的方法遍历它们:

word <- "R"
chars <- strsplit(word, "")[[1]]
for (char in chars) {
  print(char)
}

输出:

[1] "R"

这种技巧对于统计特定字符、反转字符串或逐个字符验证输入等任务至关重要。

challenge icon

挑战

简单

你会收到一行输入,其中包含一个单词(例如,programming)。

使用 strsplit() 将字符串拆分为单个字符:

  1. 将输入单词拆分为字符向量
  2. 遍历向量中的每个字符
  3. 统计字母 "a" 在单词中出现的次数(区分大小写)
  4. 使用 print() 将每个字符单独打印在一行上
  5. 循环结束后,使用 cat() 按以下格式打印计数:Count of 'a': X,并在后面换行

例如,如果输入是:

banana

输出应为:

[1] "b"
[1] "a"
[1] "n"
[1] "a"
[1] "n"
[1] "a"
Count of 'a': 3

说明:单词 "banana" 被拆分为字符 c("b", "a", "n", "a", "n", "a")。每个字符都会被打印,字母 "a" 出现了 3 次。

亲手试试

# 读取输入
con <- file("stdin", "r")
word <- suppressWarnings(readLines(con, n = 1))

# 初始化字母 'a' 的计数器
count_a <- 0

# TODO: 在下方编写你的代码
# 1. 使用 strsplit() 将单词拆分成单个字符
# 2. 遍历每个字符
# 3. 使用 print() 输出每个字符
# 4. 统计 'a' 出现的次数

# 输出 'a' 的出现次数
cat("Count of 'a': ", count_a, "\n", sep = "")
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: R 在线编译器