R语言条件、循环、函数

这篇R学习笔记介绍了条件判断,包括if、else和逻辑运算,以及循环结构如repeat、while和for循环的使用。同时讲解了set.seed函数在生成随机数中的应用,以及如何创建和使用自定义函数,包括设置缺省参数。强调了R语言的向量化特性,并通过实例展示了向量化操作可能导致的错误。此外,还提供了数据标准化和累加计算的函数示例。
摘要由CSDN通过智能技术生成

本系列为R语言系统学习笔记,已收录至“R语言笔记”专栏,可戳右下角专栏目录订阅,空余时间会持续更新。往期文章:
0. R的下载与安装 vs Rstudio报错
1. R语言向量、矩阵、数组、数据框

条件

生成条件

i <- 1
if(i>10)print('i is positive')else
  print('i is negative') #i大于10,打印i is positive,不大于10,打印i is negative
i <- -1
if(i>0 & i<2)print('i=1')else
  print('i don\'t known') #注意在引号内使用引号时,需在前加\

条件运算

x <- 1
if(x > 2)
{
  y = 2 * x
  z = 3 * y #放在同一行需要中间加分号
}else #else也必须紧跟在if大括号后面才能识别
{
  y = 2 + x
  z = 2 * y
} #大括号用于语句
y;z #输出y和z 
  • R语言侧重向量化操作
x <- 10
y <- c(8,10,12,3,17)
if(y<x) x else y 
  • 注释
    此语句本意是若y<x就输出x,否则输出y。但由于R语言侧重向量操作,x与y比较,代表x分别和y中的每个元素比较。故不是输出1个值,而是输出5个逻辑值:TRUE FALSE FALSE TRUE FALSE。又 if 函数只认第一个值TRUE,所以会报错

循环

注意:与Python不同,在R语言中不建议用循环,因为逻辑更侧重于向量化操作

repeat循环

i <- 5
repeat{if(i > 25) break else #break代表跳出循环
{print(i)
    i <- i + 5}
}

while循环

i <- 5
while (i<=25) {
  print(i)
  i <- i + 5
} #使用while当满足xxx条件时输出xxx

for循环

for (i in 1:10) {
  print(i)
} #使用for语句循环

set.seed随机数

set.seed(2022) #生成一个随机数种子
x <- sample(10:100,10) #在10-100中随机取10个数
y <- sample(1:100,10) #在1-100中随机取10个数
z <- NULL
for (i in 1:10) {
  z[i] = x[i]>y[i]
}
z
set.seed(2022)
x <- sample(10:100,10) 
y <- sample(1:100,10)
z <- NULL
for (i in 1:10) {
  if(x[1]>y[i]){
    z = append(z,x[i])
  }
}
z

两重循环

mat <- matrix(NA,nrow = 4,ncol = 5) #设置一个4x5的空矩阵

for (i in 1:4) {
  for (j in 1:5) {
    mat[i,j] <- 2 #i行j列都赋值为2
    
  }
}
mat #两重循环填入行和列

函数

mean均值函数

mean(c(1:5,NA)) #有NA在计算出的均值也是NA
mean(c(1:5,NA),na.rm = TRUE) #所以这里设置去除NA,就可以输出均值了

自定义函数

my_fun1 <- function(x,y){ #将function设置成2个参数x和y
  x + y #函数体包含在大括号里面
} #这时候my_fun1就可以作为函数直接使用了
my_fun1(1,2) #使用my_fun1函数
my_fun2 <- function(x,y = 2){ #将y默认设置成2
  x + y
} 
my_fun2(1) #这时只传入x的值就可以了
my_fun2(1,3) #y写为3也可

缺省参数

values <- c(sqrt(1:100)) #求1-100的平方根
my_fun3 <- function(x,...){
  print(x)
  summary(...)} #summary函数可输出数据基本信息
my_fun3('Here is summary for values:',values,digits=2)
  • addeup函数
addemup <- function(x,...){
  args <- list(...)
  for (a in args)x <- x + a
  x  
}
addemup(1,2,3,4,5) 
  • 标准化函数
normalize <- function(x,m = mean(x,...),s = sd(x,...),...){
  (x - m)/s
} #数据标准化函数
normalize(x = 1:100)
  • cr.leopard课程
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值