R编程周期有很多if和else if

时间:2015-12-23 19:28:59

标签: r csv if-statement for-loop cycle

我在 R

中尝试解决了以下任务

"第一栏的学生申请了大学。学院提供以下课程:

大学1:8点

College2:10 spot

大学3:15现场

任务是根据申请人的分数填补3所不同学院的可用位置。得分最高的申请人应进入他们最喜欢的大学。如果学生不能进入任何大学,你也应该给他留个标记。 如果两个学生的分数相同,而且他们都想进入同一所大学,那么他们都不会进入。相反,这些地方会得到保留,稍后会由理事会分发。

示例:

学生25和学生26都得分为16,但如果他们都进入了他们最喜欢的College1,那么他们中的一个就没有床。所以他们最终都是他们的第二大学院,当然如果还有免费的地方。因此,他们最终都将进入College2,而College1将会出现空位。

你应该制作两张桌子。第一个表应包含学生的姓名,他们的ID以及他们被分配到的学院的名称。第二个表应包含3所大学的名称和分配给每所大学的学生人数。"

here is the csv that contains the data of the students 我编写了以下R循环来分配学生:

College1 <- 8
College2 <- 10
College3 <- 15

students<-read.table("students.csv",header=T,sep=";",stringsAsFactors = F)

solution <- matrix(,nrow(students),3)


for (i in 1:(nrow(students)-1)){
if((students[i,3]==students[i+1,3])&(students[i,4]==students[i+1,4])){
         solution[i,3]<-"Distributed later";solution[i+1,3]<-"Distributed later";
         if(students[i,4]=="College1"){College1<-College1-2}
     else if(students[i,4]=="College2"){College2<-College2-2}
     else{College3<-College3-2}}
         else if(students[i,4]=="College1"){if(College1>0){solution[i,3]<-"College1";College1<-College1-1}
        }else if(students[i,4]=="College2 "){if(College2>0){solution[i,3]<-"College2";College2<-College2-1}
        }else if(students[i,4]=="College3"){if(tarka>0){solution[i,3]<-"College3";College3<-College3-1}
        }else if(students[i,5]=="College1"){if(College1>0){solution[i,3]<-"College1";College1<-College1-1}
        }else if(students[i,5]=="College2 "){if(College2>0){solution[i,3]<-"College2";College2<-College2-1}
        }else if(students[i,5]=="College3"){if(College3>0){solution[i,3]<-"College3";College3<-College3-1}
        }else if(students[i,6]=="College1"){if(College1>0){solution[i,3]<-"College1";College1<-College1-1}
        }else if(tanulok[i,6]=="College2 "){if(College2>0){solution[i,3]<-"College2";College2<-College2-1}
        }else if(College3>0){solution[i,3]<-"College3";College3<-College3-1}}
}
}

College1
College2
College3

solution

我意识到我在代码中犯了多个错误。

1:当2名学生拥有相同的分数和最喜欢的大学时,我的代码将他们两个都放到&#34;分发后来&#34;类别,实际上他们应该被分配到他们的第二个最喜欢的大学,一个地方应该保留他们最喜欢的大学。 我无法弄清楚如何解决这个问题。

2:我的if / else if结构存在很大问题。我的代码的后面部分不像&#34;否则如果&#34;代码应该表现得很好,但是即使我以前的代码也是如此&#34; if&#34;命令生效。 请帮我修复if / else if结构!

0 个答案:

没有答案