我正在尝试缩短我的代码并使它更有效率。
我的用例是这样:
(基本上)它将从用户那里获取输入,以便基本上描述数据的类型。然后,需要计算每种类型的数量。
就目前而言,它的效率很低,但是可以正常工作。 目前,我的代码是这样的:
#############
#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天线,这将以指数方式增加这种简单任务的代码数量。
提前谢谢! 科迪
编辑: 正如已经指出的那样,使用因素将是非常有益的,但是仍然让我寻找某种原始用户界面,该界面比仅仅填写一个向量要容易一些。我想要类似的东西:
#(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)
答案 0 :(得分:3)
感谢您提供代码段。我希望我能正确理解您要做什么。我建议您将天线保持在向量中。向量的长度将告诉您要计算的天线数量。这是一个12根天线的例子。
#ant <- c(1,2,2,1)
ant <- c(1,2,2,1,3,2,2,3,1,1,3,2)
ant_f <- factor(ant, levels=c(1:3),labels =c("2g", "5g", "dual"))
table(ant_f)
#>
#> ant_f
#> 2g 5g dual
#> 4 5 3
基本上所有您需要做的都是定义可能值的解释(在这种情况下,因子应该很好地工作),它将用作字典。然后只用table()
您可以通过矢量子设置来引用单个天线。因为这是一个因素,它将带有标签。
ant_f[5]
#> [1] dual
#> Levels: 2g 5g dual