Я новичок в R и изучаю вложенные функции if. Я выполнил следующее упражнение из Книги Р, чтобы определить точные дозы препарата. Если в doselevel
был какой-либо экземпляр "High", я выполнял операции с различными дозами lowdose
, meddose
, highdose
и возвращал вектор правильных dosage
. У меня это работает с использованием вложенных функций if, но я видел, что это намекало на то, что это ситуация, которая может лучше подходить для switch
функции.
Как бы выглядела функция переключения в этой ситуации?
lowdose <- 12.5
meddose <- 25.3
highdose <- 58.1
doselevel <- factor(c("Low","High","High","High","Low","Med","Med"),levels=c("Low","Med","High"))
if(any(doselevel=="High")){
if(lowdose>=10){
lowdose <- 10
} else {
lowdose <- lowdose / 2
}
if(meddose>=26){
meddose <- 26
}
if(highdose>=60){
highdose <- highdose * 1.5
} else {
highdose <- 60
}
doseage <- rep(lowdose,times=length(doselevel))
doseage[which(doselevel=="Med")] <- meddose
doseage[which(doselevel=="High")] <- highdose
} else {
doselevel <- factor(doselevel,c("Low","Med"),labels=c("Small","Large"))
if((lowdose<15)&&(meddose<35)){
lowdose <- lowdose * 1.5
meddose <- meddose + highdose
}
}