遍历字符(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"这种技巧对于统计特定字符、反转字符串或逐个字符验证输入等任务至关重要。
挑战
简单你会收到一行输入,其中包含一个单词(例如,programming)。
使用 strsplit() 将字符串拆分为单个字符:
- 将输入单词拆分为字符向量
- 遍历向量中的每个字符
- 统计字母
"a"在单词中出现的次数(区分大小写) - 使用
print()将每个字符单独打印在一行上 - 循环结束后,使用
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 = "")这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: R 在线编译器