- 条件
- 生成条件
- 条件运算
- 循环
- repeat循环
- while循环
- for循环
- set.seed随机数
- 两重循环
- 函数
- mean均值函数
- 自定义函数
- 缺省参数
R语言学习笔记1 条件 生成条件
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循环
- 注释
此语句本意是若y注意:与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条件时输出xxxfor循环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] } zset.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课程



