我必须在r中创建一个等级计算器,该计算器可以将数字等级转换为字母等级。这是我想出的代码:
numGrades<-(c(66,02,99,59,82))
for(i in 1:length(numGrades)) {
if (numGrades[i]>=90){
print("A")
} else if (numGrades[i]>=80){
print("B")
} else if (numGrades[i]>=70){
print("C")
} else if (numGrades[i]>=60){
print("D")
} else {
print("F")}
}
我找不到一种方法来集成cat或print(c())函数,以使其在一行上打印而不是:
[1] "D"`
[1] "F"`
[1] "A"
[1] "F"
[1] "B"
如果有人有任何想法,将不胜感激!
答案 0 :(得分:1)
我将简单地使用粘贴将“已分级”列表的所有元素结合在一起。希望这可以帮助。
const child = child_process.fork('child.js');
child.on('message', (data) => { });
这给出了:
numGrades = graded = (c(66,02,99,59,82))
for(i in 1:length(numGrades)) {
if (numGrades[i]>=90){
graded[i] = "A"
} else if (numGrades[i]>=80){
graded[i] = "B"
} else if (numGrades[i]>=70){
graded[i] = "C"
} else if (numGrades[i]>=60){
graded[i] = "E"
} else {
graded[i] = "F"}
}
print(paste(graded))
答案 1 :(得分:1)
为什么cat
不起作用?
numGrades<-(c(66,02,99,59,82))
for(i in 1:length(numGrades)) {
if (numGrades[i]>=90){
cat("A ")
} else if (numGrades[i]>=80){
cat("B ")
} else if (numGrades[i]>=70){
cat("C ")
} else if (numGrades[i]>=60){
cat("D ")
} else {
cat("F ")}
}
答案 2 :(得分:0)
对于R中的许多任务,最好使用矢量化函数而不是循环来完成。这是您想做的两种方式,一种使用底数R,另一种使用window
。请注意,dplyr::case_when
返回一个因子,但是您始终可以使用cut
。
as.character
答案 3 :(得分:0)
仅作记录,无需使用for循环,您可以使用嵌套的ifelse
> graded2 <- ifelse(numGrades>=90, "A",
ifelse(numGrades >= 80 & numGrades < 90, "B",
ifelse(numGrades >= 70 & numGrades < 80, "C",
ifelse(numGrades >= 60 & numGrades < 70, "E", "F"))))
> graded2
[1] "E" "F" "A" "F" "B"