R语言基础保姆教程01--从工具到数据类型
R语言笔记01
1.前期准备
1.1. 安装R环境及Rstudio工具
这里不再详细展开,网上有很多资料可供参考。下载文件时注意匹配自己的计算机系统(windows或Mac等)。
核心步骤包括:
- 从CRAN官网下载安装包、设置无中文路径。(R语言的计算机环境)
- 安装RStudio IDE以及配置国内镜像以加速包下载。(RStudio IDE是编写R语言的工具)
1.2 Rstudio工具使用
认识必要窗口:
terminal: 终端–通过命令操作计算机
console:直接运行代码的窗口
新建R文件如下:
1.3 了解文档搜索工具
了解即可
● RSeek 引擎:https://rseek.org/
1.4 更新镜像(镜像就是资源的链接,更新为国内的,下载快)
操作:点击 Tools → Global Options → Packages → 选择 CRAN mirror。
CRAN 镜像:
清华:https://mirrors.tuna.tsinghua.edu.cn/CRAN/
中科大:https://mirrors.ustc.edu.cn/CRAN/
Bioconductor 镜像:
清华:https://mirrors.tuna.tsinghua.edu.cn/bioconductor
2.基本语法(基础很重要)
2.1 变量
2.1.1 变量的命名规则:变量名称由字母,数字以及点号 . 或下划线 _ 组成。不能是关键字(R语言语法中的词,比如if else等)。
快速记忆:不以数字开头、不含特殊字符。使用时根据语义命名一般不会出错。
# 合法的变量例子
count1
my.name
my_name
# 不合法的变量
1var (以数字开头)
_var (以下划线开头,在R中不允许,除非使用反引号括起来,但不推荐)
var@name (包含非法字符@)
2.1.2 变量的定义
指的是定义一个保存数据的变量(可以理解为未知数x,代指一个可变的数据)。
注意: 不变的数据需要定义常量进行保存
# 定义变量str,并赋值为Hello, World!
str = "Hello, World!"
# 定义变量count,并赋值为123
count = 123;# 定义变量
PI <- 3.14159
# 锁定变量(常量定义需要锁定--也就是不被更改)
lockBinding("PI", globalenv())
2.2 运算符
1.赋值运算符: =
注意: 还有-> <<− −>> <- 符号,建议使用时用=即可
例: num_2 = 123 表示num_2取值为123
2.算术运算符
- 除 :/
- 减:-
- 乘: *
- 加: +
- 整除:%/%( 整除取结果的整数部分(不区分除数与被除数是否为整数))
- 求余:%%( 求余就是求余数)
# 基本整除运算
10 %/% 3 # 结果: 3 (因为 10 ÷ 3 = 3.333,取整数部分)
15 %/% 4 # 结果: 3 (因为 15 ÷ 4 = 3.75,取整数部分)=-
# 负数的整除
-10 %/% 3 # 结果: -4 (向下取整)
-10 %/% -3 # 结果: 3
3.关系运算符
- 比较相等:==
- 比较不相等 : !=
- 其他(和数学中含义一样):> < >= <=
注意不同于数学中的特殊情况:
# 数字与字符的比较 : 第一步将'1'转换成数字1(隐式转换),再比较
# 数字与逻辑的比较:0为false,小数为false(隐式转换,不能将小数转换为逻辑的规则)
# 文本与逻辑的比较:将逻辑转换为文本比较,例: TRUE == 'A', 将TRUE转换为'TRUE',再和'A'比较
1 == '1' #true
1 == 'A' #false 字符A和1比较,A不能转换为对应的数字
1 == true #true
TRUE == 'A' #false
4.逻辑运算符
&: 将向量中对应元素进行组合,有1个0则为FALSE,否则为TRUE。若两个向量元素的个数为整数倍,短的复制和长的比较
| :对应元素全部为0,为FALSE
!:取反,数字、逻辑
&& : 两个逻辑值的比较,有1个为FALSE则结果为FALSE(TRUE&&FALSE)
|| : 两个逻辑值的比较,有1个为TRUE则结果为FALSE(TRUE||FALSE)
5.其他运算符:
: 冒号运算符,用于创建一系列数字的向量。
%in% :用于判断元素是否在向量里,返回布尔值,有的话返回 TRUE,没有返回 FALSE。
%*% : 用于矩阵与它转置的矩阵相乘。
2.3 数据类型
数据类型简单理解为将数据分类,有各自的语法规则。
1. R 语言中的最基本数据类型主要有三种:
● 数字类型 :例如 123
● 逻辑:true和false
● 文本:例如-“R”,记得加引号
2.按对象类型来分是以下 6 种:
这个图非常形象的说明了这几个数据类型中的关系:
● 向量(vector)
可以理解为一串数字,在生信中可以是多个样本的基因表达数据
# c() 是一个创造向量的函数--函数就是有一定功能的代码块而已,直接使用即可
> a = c(1,2,3,4,5) # 定义变量a ,赋值为向量c(1,2,3,4,5)
# DNA序列处理
dna_sequence <- c("A", "T", "G", "C", "C", "G", "A", "T")
# 计算GC含量(占比)
gc_count <- sum(dna_sequence %in% c("G", "C"))
gc_content <- gc_count / length(dna_sequence)
# 取数据
a[1:4] # 取出第 1 到 4 项,包含第 1 和第 4 项a[c(1, 3, 5)] # 取出第 1, 3, 5 项a[c(-1, -5)] # 去掉第 1 和第 5 项,将剩下的取出
● 矩阵(matrix)
注意行和列
# 创建基因表达矩阵(基因 × 样本)
# rnorm() 是 R 语言中用于生成服从正态分布(高斯分布)的随机数的函数。
# matrix()定义矩阵,nrow表示多少行,ncol表示多少列,dinmnames表示命名
expression_matrix <- matrix(rnorm(1000, mean = 10, sd = 2), # 模拟表达数据,mean:正态分布的均值,sd是标准差nrow = 200, # 200个基因ncol = 5, # 5个样本dimnames = list(paste0("Gene_", 1:200), # 基因名paste0("Sample_", 1:5) # 样本名)
)
# 查看矩阵结构
dim(expression_matrix) # 200行(基因) × 5列(样本)
head(expression_matrix[, 1:3]) # 查看前几个基因和前3个样本
● 数组(array)
数组是一种多维数据结构,可以看作是矩阵的扩展
# 创建一个三维数组:基因 × 样本 × 时间点
# 假设有5个基因,3个样本,4个时间点
gene_names <- paste0("Gene", 1:5)
sample_names <- c("Control1", "Control2", "Treatment")
time_points <- c("0h", "6h", "12h", "24h")# 生成模拟数据
set.seed(123)
expression_array <- array(rnorm(5*3*4, mean=10, sd=2),dim = c(5, 3, 4),dimnames = list(gene_names, sample_names, time_points))# 查看数组
print(expression_array)# 访问特定基因在所有样本和时间点的数据
expression_array["Gene1", , ]# 访问特定样本和特定时间点的所有基因
expression_array[ , "Control1", "0h"]# 计算每个基因在所有样本和时间点的平均值
gene_means <- apply(expression_array, 1, mean)
print(gene_means)
● 因子(factor)
因子用于存储不同类别的数据类型,常用于表示分类变量,例如样本的组别、疾病状态、性别等。
# 假设有12个样本,分为三组:对照组、处理1组、处理2组,每组4个样本,rep() 是 R 语言中用于重复向量元素的函数
# x:要重复的向量或对象 times:整体重复次数或每个元素的重复次数向量each:每个元素单独重复的次数
# 创建样本分组因子
treatment_groups <- factor(c(rep("Control", 5), rep("Drug_A", 5), rep("Drug_B", 5)),levels = c("Control", "Drug_A", "Drug_B") # 指定水平顺序# 统计各组的样本数
table(treatment_groups)
# Control Drug_A Drug_B
# 5 5 5
● 数据框(data.frame)
可以理解为表格,有行和列,行名和列名
● 列表(list)
# 存储DNA序列,list()定义列表,通过","隔开
# seq1 seq2 seq3 是各个向量的名字
sequences <- list(seq1 = c("A", "T", "G", "C", "C", "G"),seq2 = c("A", "A", "T", "G", "C", "C"),seq3 = c("T", "T", "A", "A", "G", "G")
)
# 取数据,[[1]]表示seq1元素
[[1]]
参考:https://www.runoob.com/r/r-list.html
若有疑问欢迎私信交流