R是一门解释型语言,不许要编译,可以逐行运行。
1.R的变量定义
R的变量使用前一般不需要声明,可以直接定义。使用'<-'作为赋值符号
#标量
a <- 12
#空向量
b <- c()
#空matrix
c <- matrix()
#空数据框
d <- data.frame()
#空数组
e <- array()
#空列表
f <- list()
2.包加载及脚本引用
R 包是由社区开发(developed by the community)的功能(functions)和数据集(data sets)的集合。 它们通过改进现有的基本 R 功能或通过添加新功能来提升 R 的效率。 例如,如果您经常使用数据框,可能您会听说 dplyr 或 data.table 这两个最流行的 R 包。
R脚本是指用R编写的小程序,里面包含自定义变量及函数。
通过包的加载和脚本的引用,我们可以获得基础R所不具有的功能。
install.packages("ggplot2")
library(ggplot2)
source("myfile.R")
3. 函数的使用
R函数的使用格式是: 函数(参数1 = 参数1,参数2 = 参数1,参数3 =参数1 ....)
R函数输出结果赋值给变量的方法是:变量 <- 函数(参数)
#通过函数list列出当前工作目录的gz文件
dir(pattern= 'gz')
#通过函数list列出当前工作目录的gz文件并赋值给gz_file变量
gz_file <- dir(pattern= 'gz')
4. 函数的定义
我们自己也可以创造函数 sum_num <- function(a,b){a+b}
sum_num <- function(a,b){
c <- a+b
return(c)
}
x <- sum_num(a = 1, b = 2)
x <- sum_num(2, 1)
x <- sum_num(b = 1, a = 2)
5. R的运算符
运算符本质上也是函数,只是这个函数不需要()传递参数,而是通过运算符前后的值传递参数。
数学运算符:加+,减-,乘,除/,除取余%,指数^,指数*
a <- 1 + 1
a <- 3*4
#取余数
a <- 12%5
#指数
a <- 12^2
a <- 12**2
比较运算符:>, <,==, >=, <=, !=
比较运算符是函数,可以输出两种结果,都是逻辑值:TRUE或者FALSE
1 < 2 #结果FALSE
1 == 2 #判断相等,结果FALSE
1 != 2 #判断不相等,结果为TRUE
逻辑运算符: &, |
逻辑运算符的输入是逻辑值,对于&,前后参数需要都为TURE,才输出TRUE,对于“|”则前后参数只要有一个为TURE,就输出TRUE
TRUE & FALSE #结果FALSE
TRUE | FALSE #结果TURE
1 < 2 & 2 == 2 #结果为TRUE
5. 循环结构
R的循环类型 for, while
for的格式:for (variable in vector) {expr},注意对应一下格式与实例中的关系
for在每个循环中从让variable(变量)在vector(向量)中取值,然后variable参与大括号{}中的命令,这个过程称为“循环遍历”。
k <- 0
#从1-100循环遍历
for (i in c(1:100)) {
k <- k+i
print(k)
}
#从a, b, c这样的字符串向量循环遍历
for (name in c("a","b","c")) {
print(name)
}
while的格式:while (condition) {}
while在每个循环中会判断()内的语句输出是否为TRUE,如果为TRUE就继续执行。大括号{}中的命令,直到()内的语句为FALSE。
#死循环,别执行,如果执行了,用stop终止
while (TRUE) {
print(“TRUE”)
}
#如果i大于0就一直执行
i <- 10
while (i > 0) {
i <- i -1
print(i)
}
5. 分支结构
R的分支类型 if, else, switch
if的格式:if(condition){}
if是指如果if后的condition为真,则执行大括号内的程序,如果如假,则跳过后面的程序。
if(TRUE){print"I am TRUE"}
if(1 <2){print"1 < 2 is TRUE"}
if,else
格式
if(condition1){expr}else(condition2){expr}
if(condition1) {expr} else if(condition2){expr} else(condition2){expr}
通过多个条件判断的分支结构
if(FALSE){
print ("I am if")
}else(FALSE){
print ("I am else")
}
#分数判断
socre = 60
if(score >= 90){
print ("excellent")
}else if(score >=60 & score<90){
print ("good")
}else{
print("bad")
}
switch
switch是为了解决复杂分支结构,比如条件有十种,使用if,else编写会比较麻烦。
switch格式
switch(expr,
case1 = "case1",
case2 = "case2"
case3 = "case3"
...)
switch里的expr是为了得到case的值,之后通过case的值来输出结果
x <- 3
switch(x,"first","second","third","fourth")
#[1] "third"
input <-"LDHA"
switch(input, LDHA="LDHA", SNAP23 = "SNAP23", CD274 = "CD274", PDCD1="PDCD1")
#[1] "LDHA"