一起来学 R编程吧(2)---判断语句switch函数的用法

本文介绍了R语言中的switch函数,作为一种简洁的条件判断工具,它能替代if语句实现更复杂的逻辑。通过示例,详细解析了switch函数的基本语法,并展示了如何在计算平均值、中位数和修剪均值等场景中使用。此外,还探讨了如何在字符变量和分类变量上下文中应用switch函数,包括处理未匹配条件的情况。通过理解和掌握switch函数,能够提高R语言编程的效率。
摘要由CSDN通过智能技术生成

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")

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天桥下的卖艺者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值