R基础:使用for循环与索引i编写最优代码实现分数转字母等级
R语言生成分数对应字母等级问题解决
你提交的代码是Python语法,不符合R的语法规范,因此R解释器无法识别代码关键字和结构,触发unexpected symbol报错。
原代码的核心错误点
- R定义函数不用
def关键字,正确写法是函数名 <- function(参数) { 函数体 } - R的代码块必须用大括号
{}包裹,仅靠缩进无法区分代码层级 - 函数参数定义为
score,但函数内部又将score赋值为subject_total,变量名冲突会导致逻辑错误 - Python风格的
range(len())遍历、元组结构均不被R支持,R的索引默认从1开始,遍历列表可直接用for (元素 in 列表)语法
正确的R实现代码
getLetterGrade <- function(subject_total) { score <- round(subject_total) # 定义分数阈值与对应等级规则 grade_rules <- list( c(80, "A"), c(70, "B"), c(60, "C"), c(50, "D"), c(0, "F") ) # 匹配对应等级 for (rule in grade_rules) { if (score >= as.numeric(rule[1])) { return(rule[2]) } } }
使用示例
单个分数查询
getLetterGrade(79.4) # 返回 "B" getLetterGrade(80) # 返回 "A" getLetterGrade(45) # 返回 "F"
批量生成分数对应的等级列表
# 输入你的科目总分列表 total_scores <- c(93, 76, 62, 55, 49, 81) # 批量计算等级 letter_grades <- sapply(total_scores, getLetterGrade) # 输出结果 print(letter_grades)
内容的提问来源于stack exchange,提问作者Josh Naunton
相关产品推荐
相关产品推荐

