R语言编程——条件、循环语句

这次介绍R语言中的条件语句和循环语句,将为大家介绍if、for、while、repeat。采用介绍函数和实战练习的方式,希望大家能够更好的理解。

if语句

  if (cond) {
  cond为真时执行的语句
}else{
  cond为假时执行的语句
}

如果需要一次性处理多个true和false数据时,可以使用ifelse()函数

ifelse(
  test, #测试的对象
  yes, #true,选择该值
  no, #false,选择该值
)

以判断奇数偶数为例:

x <- c(1,3,5,7,8,6) # x%% 2 == 0 作为判断条件
ifelse(x %% 2 == 0 ,"偶数","奇数")

所得结果:

[1] "奇数" "奇数" "奇数" "奇数" "偶数" "偶数"

循环语句

在循环语句中可以使用break与next语句调整循环的执行流程
break:退出循环语句
next:终止当前正在执行的语句块,进入下一循环

for语句

for (i in data) {
  使用i的语句,对每个i执行该语句
}

这里依旧采用奇数偶数这个例子:

x <- c(1:15)
count <- NULL # 创建一个空集
for (i in x) {
  if (i %% 2 == 0) {
    count <- append(count,"偶数") # append函数可以向向量中添加值
  }else{
    count <- append(count,"奇数")
  }
}
print(count)

结果如下图所示:

> print(count)
 [1] "奇数" "偶数" "奇数" "偶数" "奇数" "偶数" "奇数" "偶数" "奇数"
[10] "偶数" "奇数" "偶数" "奇数" "偶数" "奇数"

while语句

while (cond) {
  cond为true执行的语句,直到cond为false,退出循环
}
i <- 0
count <- NULL # 创建一个空集
while (i <= length(x)) {
  i <- i + 1
  if (i %% 2 == 0) {
    count <- append(count,"偶数") # append函数可以向向量中添加值
  }else{
    count <- append(count,"奇数")
  }
}
print(count)

结果和for语句的结果相同。

repeat语句

repeat{
  循环的语句,直到遇到退出的条件
}

大家可以自己尝试运用repeat函数实现奇数偶数的判断,遇到问题可以留言交流哦,互相提高,嘿嘿。

实战练习

问题1:
水仙花数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)。

要求:打印输出 n = 3 时所有的"水仙花数"。

#method1定义函数
flower <- function(x){
  x=100:x
  a <- floor(x/100)#floor向下取整,得到百位数
  b <- floor((x- 100*a)/10)#十位数
  c <- x - a*100 - b*10#个位数
  y = a^3 + b^3 +c^3 == x
  data <- data.frame(x,y)
  data[y == T,1]
}
#method2条件循环语句
conter <- c()
for (i in 100:999) {
  a <- floor(i/100)#floor向下取整,得到百位数
  b <- floor((i- 100*a)/10)#十位数
  c <- i - a*100 - b*10#个位数
  if(i == a^3 + b^3 + c^3){
    conter <- append(conter,i)#append函数将value给x
  }
}
print(conter)

给大家留一个小作业:
话说有一对可爱的兔子,出生后的第三个月开始,每一月都会生一对小兔子。当小兔子长到第三个月后,也会每个月再生一对小小兔子.

问题:假设条件,兔子都不死的情况下,问每个月的兔子总数为多少?

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Bio大恐龙

您的打赏是我前进的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值