Я пытаюсь сократить свой код и сделать его немного более эффективным.
Мой пример использования:
Он (приблизительно) будет принимать данные от пользователя, чтобы описать тип данных в основном. Затем требуется подсчет количества каждого типа.
В нынешнем виде это очень неэффективно, но работает.
В настоящее время мой код такой:
#############
#1 = 2g4 #
#2 = 5g #
#3 = dual #
#############
num_of_Antennas = 4
ant1 = 1
ant2 = 2
ant3 = 2
ant4 = 1
#initialize each count to 0
count2g4 = 0
count5g = 0
countDual = 0
if (num_of_Antennas==4){
#check type for ant1
if (ant1==1){
count2g4 = count2g4+1
} else if (ant1==2){
count5g = count5g+1
} else if (ant1==3){
countDual = countDual+1;
}
###############
#check type for ant2
if (ant2==1){
count2g4 = count2g4 +1
} else if (ant2==2){
count5g = count5g +1
} else if (ant2==3){
countDual = countDual +1;
}
###############
#check type for ant3
if (ant3==1){
count2g4 = count2g4 +1
} else if (ant3==2){
count5g = count5g +1
} else if (ant3==3){
countDual = countDual +1;
}
###############
#check type for ant4
if (ant4==1){
count2g4 = count2g4 +1
} else if (ant4==2){
count5g = count5g +1
} else if (ant4==3){
countDual = countDual +1;
}
###############
} else if (num_of_Antennas==3){
#check type for ant1
if (ant1==1){
count2g4 = count2g4+1
} else if (ant1==2){
count5g = count5g+1
} else if (ant1==3){
countDual = countDual+1;
}
###############
#check type for ant2
if (ant2==1){
count2g4 = count2g4 +1
} else if (ant2==2){
count5g = count5g +1
} else if (ant2==3){
countDual = countDual +1;
}
###############
#check type for ant3
if (ant3==1){
count2g4 = count2g4 +1
} else if (ant3==2){
count5g = count5g +1
} else if (ant3==3){
countDual = countDual +1;
}
###############
} else if (num_of_Antennas==2){
#check type for ant1
if (ant1==1){
count2g4 = count2g4+1
} else if (ant1==2){
count5g = count5g+1
} else if (ant1==3){
countDual = countDual+1;
}
###############
#check type for ant2
if (ant2==1){
count2g4 = count2g4 +1
} else if (ant2==2){
count5g = count5g +1
} else if (ant2==3){
countDual = countDual +1;
}
###############
} else if (num_of_Antennas==1){
#check type for ant1
if (ant1==1){
count2g4 = count2g4+1
} else if (ant1==2){
count5g = count5g+1
} else if (ant1==3){
countDual = countDual+1;
}
} else (print("ERROR, Num of antennas = 0"))
Я немного новичок, когда дело доходит до кодирования, но я уверен, что есть лучший способ сделать это.
Я начал играть с идеей превратить ее в какую-то параметрическую функцию, но пока не нашел хорошего способа сделать это.
Итак, как я могу сделать это без ущерба для гибкости?
Я также рассчитываю расширить это до максимума 12 антенн, что увеличит количество кода для такой простой задачи.
Заранее спасибо!
Cody
EDIT:
Как уже указывалось, использование факторов будет чрезвычайно полезным, но это все еще заставляет меня искать какой-то необработанный пользовательский интерфейс, за которым немного легче следовать, чем просто заполнять вектор. Я хотел бы что-то похожее на это:
#(not working)
ant1 = 1
ant2 = 2
ant3 = 3
ant4 = 1
data = paste(ant1, ant2, ant3, ant4 sep = ",")
data
ant <- c(data)
ant_f <- factor(ant, levels=c(1:3),labels =c("2G4", "5G", "Dual"))
table(ant_f)