R语言由一个个基础函数组成,熟练灵活应用这些基础函数,有助于我们更好的学习R包及编程,这个专栏可能很多人不感兴趣,但是对提升自己很有帮助,感兴趣的朋友一起来学习。
switch函数在R中作为条件判断分支的语句,类似与if语句,但比if语句简单,可以实现更加复杂的功能,在编程中有很大帮助。
它的基本语法是
switch(expression, case1, case2, case3....)
这里以R语言中switch函数的帮助文件例子做讲解(帮助文件讲的很好,不用在找例子了)
我们先生成一个centre的函数,有两个变量
centre <- function(x, type) {
switch(type,
mean = mean(x),
median = median(x),
trimmed = mean(x, trim = .1))
}
我们来看看switch的部分type是你选择的类型,是你要填入的选项,有3个备用选项待选mean,median ,trimmed,你选了哪个就会使用哪个的算法,假设你选了mean,R软件就会执行mean(x),求出x的平均值。好的我们接下来看。
这个函数有两个变量x和type,我们先生成一个x,
x <- rcauchy(10)
x由10个数组成
centre(x, "mean")
输入x,和"mean"后switch判断mean = mean(x),将会对x取平均数
其他的算法也是一样的
centre(x, "median")
centre(x, "trimmed")
我们继续升入了解这个函数,刚才说了数字,下面来点字符的用法
我们先生成一个字符串向量
ccc <- c("b","QQ","a","A","bb")
建立一个循环
for(ch in ccc)
cat(ch,":", switch(EXPR = ch, a = 1, b = 2:3), "\n")
这个循环的意思是ch 在ccc这个向量中跑一遍,然后函数cat输出ch,:号和switch判断的语句,如ch等于a就输出1,等于b就输出2:3,没有符合的条件switch这里就没有输出
再来一个循环
for(ch in ccc)
cat(ch,":", switch(EXPR = ch, a =, A = 1, b = 2:3, "Otherwise: last"),"\n")
这个循环和上一个不同的是上一个是没有符合的条件switch这里就没有输出,这个是没有符合的条件,switch这里输出Otherwise: last
下面来做个分类变量的例子,先生成个分类变量
ff <- gl(3,1, labels=LETTERS[3:1])
ff
我们取第一个字母C
ff[1] # C
我们期望这里输出 is C,但并不是,而且出了警告
switch(ff[1], A = "I am A", B="Bb..", C=" is C")
因为C是分类变量,而这里把它当成字符变量判断了,我们改一下
switch(as.character(ff[1]), A = "I am A", B="Bb..", C=" is C")