使用 seq_along()
本课属于 Coddy R 学习旅程的“基础知识”单元。第 64 课,共 78 课。
有时你既需要元素的值,也需要它在向量中的位置。直接遍历元素的写法很简洁,但无法访问索引。seq_along() 函数可以生成适用于任意向量的索引序列。
seq_along() 函数会返回一个从 1 到向量长度的序列:
fruits <- c("apple", "banana", "cherry")
print(seq_along(fruits))输出:
[1] 1 2 3通过遍历这些索引,你可以访问位置和值:
fruits <- c("apple", "banana", "cherry")
for (i in seq_along(fruits)) {
cat(i, ":", fruits[i], "\n")
}输出:
1 : apple
2 : banana
3 : cherry当你需要修改特定位置的元素,或将元素与相邻元素进行比较时,这种方法尤其有用。使用 seq_along() 比使用 1:length(vec) 更安全,因为它能正确处理空向量,返回空序列,而不是 1:0。
挑战
简单你会收到一行输入,其中包含以逗号分隔的数字(例如,10,20,30,40,50)。
使用 seq_along() 按索引遍历向量:
- 根据以逗号分隔的输入创建一个向量
- 使用
seq_along()遍历向量,同时获取索引和值 - 对于每个元素,输出索引、值,以及截至该位置的累计和(从位置 1 到当前位置的所有元素之和)
使用 cat(),格式为:Position X: VALUE (Running total: TOTAL),后面跟一个换行符。
例如,输入为:
5,10,15,20输出应为:
Position 1: 5 (Running total: 5)
Position 2: 10 (Running total: 15)
Position 3: 15 (Running total: 30)
Position 4: 20 (Running total: 50)说明:在位置 1,值为 5,累计和为 5。在位置 2,值为 10,累计和为 5+10=15。在位置 3,值为 15,累计和为 5+10+15=30,以此类推。
提示:使用 sum(vector[1:i]) 计算截至位置 i 的累计和。
亲手试试
# 读取输入
con <- file("stdin", "r")
input_line <- suppressWarnings(readLines(con, n = 1))
close(con)
# 将逗号分隔的字符串转换为数值向量
numbers <- as.numeric(strsplit(input_line, ",")[[1]])
# TODO:在下方编写代码
# 使用 seq_along() 遍历向量
# 对每个位置,打印索引、值和累计总和
# 使用 cat(),格式为:Position X: VALUE (Running total: TOTAL)\n这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: R 在线编译器