如何编写接收任意长度数值向量、返回对应英文星期名的R函数(附异常代码求助)
原有代码的核心错误
- 语法无效:
l <- c(:)缺少冒号两侧的数值边界,属于R中无法解析的非法写法 - 逻辑颠倒:循环遍历的目标错写为存储星期名的向量
english,全程没有使用传入的参数N做映射 - 实现冗余:R的向量结构本身支持批量索引取值,不需要依赖for循环完成映射
可正常运行的实现方案
核心思路是利用R的向量原生索引特性,直接匹配传入参数对应的星期名称,同时通过取模运算处理输入值超出1-7范围的场景(比如测试输入里的8),保证函数对任意长度的数值向量输入都兼容。
注意:该实现完全不需要循环,R在做向量索引时会自动逐元素匹配取值,从根本上支持任意长度、任意维度的一维数值向量输入
days_of_the_weeks <- function(N) { # 定义下标与星期的固定映射关系:位置1对应Monday,位置7对应Sunday week_name_vec <- c('Monday','Tuesday','Wednesday', 'Thursday','Friday', 'Saturday', 'Sunday') # 计算适配的有效下标,解决超出1-7范围的循环匹配问题 valid_index <- (N - 1) %% 7 + 1 # 批量索引取值,自动适配任意长度的输入向量 week_name_vec[valid_index] } # 测试调用 days_of_the_weeks(c(3,5,7,8,2))
运行输出
执行上述测试代码会得到对应结果:
[1] "Wednesday" "Friday" "Sunday" "Monday" "Tuesday"
内容的提问来源于stack exchange,提问作者sjr_25
相关产品推荐
相关产品推荐

