R语言速成第二课:R的语法结构

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"
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、数据库介绍篇 1.1什么是数据库 数据库:保存数据的仓库。它体现我们电脑中,就是一个文件系统。然后把数据都保存...
    投石机阅读 775评论 0 0
  • 总体概述 运算符 流程控制 类和对象 泛型 库的使用 一、运算符 1.1、Dart 所有的运算符描述运算符一元后缀...
    IIronMan阅读 545评论 2 3
  • 作用域 作用域是你的代码在运行时,各个变量、函数和对象的可访问性。 为什么需要作用域? 最小访问原则 通过显示变量...
    竹鼠不要中暑阅读 136评论 0 0
  • Dart基础入门语法介绍,详细说明可以查看相关视频《Dart编程语言入门》。 变量与常量 变量 1.使用var声明...
    Tseng_dc阅读 827评论 0 0
  • MySQL基础操作 创建数据库 创建数据库,该命令的作用: 如果数据库不存在则创建,存在则不创建。 创建RUNOO...
    少年_323a阅读 795评论 0 0