打印时等级舍入函数给我 'Logical(0)' - R
Grade rounding function giving me 'Logical(0)' when printing - R
我正在尝试使用 for 和 if 循环将随机成绩(向量)四舍五入到最接近的成绩(类别)。这个想法是该函数获取成绩并将它们放入一个类别中。该类别包含四舍五入的成绩并具有变量 'gradesRounded'。 gradesRounded 将被 return 编辑和打印,这将 logical(0)
作为输出。我非常希望输出包含四舍五入等级的向量。我该如何解决? (input/output 应该是向量和函数名称 + return(gradesRounded 必须包括因为它与赋值相关)输出应该是 -3, 7, 4, 12, -3
roundGrade <- function(grades) {
grades <- c(-3, 7, 3, 11, -2)
gradesRounded <- category
for (i in grades){
if (grades >= -3 & grades <= -2) {category=("-3")}
else if (grades >= -2 & grades <= 00) {category=("00")}
else if (grades >= 1 & grades <= 02) {category=("02")}
else if (grades >= 3 & grades <= 4) {category=("4")}
else if (grades >= 6 & grades <= 7) {category=("7")}
else if (grades >= 8 & grades <= 10) {category=("10")}
else if (grades >= 11 & grades <= 12) {category=("12")}
return(gradesRounded)
}
}
您可能正在尝试这样做:
roundGrade <- function(grades) {
category <- numeric(length(grades))
for (i in seq_along(grades)) {
if (grades[i] >= -3 & grades[i] <= -2) {category[i]= -3}
else if (grades[i] >= -2 & grades[i] <= 0) {category[i]= 0}
else if (grades[i] >= 1 & grades[i] <= 2) {category[i]= 2}
else if (grades[i] >= 3 & grades[i] <= 4) {category[i]= 4}
else if (grades[i] >= 6 & grades[i] <= 7) {category[i]= 7}
else if (grades[i] >= 8 & grades[i] <= 10) {category[i]= 10}
else if (grades[i] >= 11 & grades[i] <= 12) {category[i]= 12}
}
return(category)
}
grades <- c(-3, 7, 3, 11, -2)
result <- roundGrade(grades)
result
#[1] -3 7 4 12 -3
另请参阅 ?cut
和 ?findInterval
,这对此类情况很有帮助。
我正在尝试使用 for 和 if 循环将随机成绩(向量)四舍五入到最接近的成绩(类别)。这个想法是该函数获取成绩并将它们放入一个类别中。该类别包含四舍五入的成绩并具有变量 'gradesRounded'。 gradesRounded 将被 return 编辑和打印,这将 logical(0)
作为输出。我非常希望输出包含四舍五入等级的向量。我该如何解决? (input/output 应该是向量和函数名称 + return(gradesRounded 必须包括因为它与赋值相关)输出应该是 -3, 7, 4, 12, -3
roundGrade <- function(grades) {
grades <- c(-3, 7, 3, 11, -2)
gradesRounded <- category
for (i in grades){
if (grades >= -3 & grades <= -2) {category=("-3")}
else if (grades >= -2 & grades <= 00) {category=("00")}
else if (grades >= 1 & grades <= 02) {category=("02")}
else if (grades >= 3 & grades <= 4) {category=("4")}
else if (grades >= 6 & grades <= 7) {category=("7")}
else if (grades >= 8 & grades <= 10) {category=("10")}
else if (grades >= 11 & grades <= 12) {category=("12")}
return(gradesRounded)
}
}
您可能正在尝试这样做:
roundGrade <- function(grades) {
category <- numeric(length(grades))
for (i in seq_along(grades)) {
if (grades[i] >= -3 & grades[i] <= -2) {category[i]= -3}
else if (grades[i] >= -2 & grades[i] <= 0) {category[i]= 0}
else if (grades[i] >= 1 & grades[i] <= 2) {category[i]= 2}
else if (grades[i] >= 3 & grades[i] <= 4) {category[i]= 4}
else if (grades[i] >= 6 & grades[i] <= 7) {category[i]= 7}
else if (grades[i] >= 8 & grades[i] <= 10) {category[i]= 10}
else if (grades[i] >= 11 & grades[i] <= 12) {category[i]= 12}
}
return(category)
}
grades <- c(-3, 7, 3, 11, -2)
result <- roundGrade(grades)
result
#[1] -3 7 4 12 -3
另请参阅 ?cut
和 ?findInterval
,这对此类情况很有帮助。