当前位置: 首页 > news >正文

R语言基础入门详细教程

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.基本语法(基础很重要)

参考:https://www.runoob.com/r/r-list.html

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]]  
http://www.dtcms.com/a/465084.html

相关文章:

  • 用wordpress建立学校网站吗人工智能教育培训机构排名
  • 网站及其建设的心得体会wordpress能做大站吗
  • Java SpringMVC(二) --- 响应,综合性练习
  • 【保姆级教程】VMware Workstation Pro 17安装及基础使用
  • 网站开发源代码mvc电子商务网站建设与管理实训报告
  • Bootstrap4 提示框详解
  • 数据分析硬件配置——选购计算机
  • 在Java中,如何实现封装?
  • 【实录】使用 patch-package 修复第三方 npm 包中的 Bug
  • Warm-Flow 1.8.2版本发布|新增功能和优化,体验更稳定
  • 电池组PACK自动化生产线介绍|深圳比斯特自动化
  • 云手机的挂机功能涉及到哪些内容
  • 手机群控软件在游戏运营中的风险管控技术实现
  • js打开网站做欧美市场的网站
  • MongoDB源码delete分析oplog:从删除链路到核心函数实现
  • 运维面试准备——综合篇(一)
  • 线性代数 · 矩阵 | SVD 与 PCA 应用区别
  • 网站漏洞扫描服务个人怎么做公众号
  • 云计算综合标准化体系建设提供系统性指引
  • 阿里云智能集团首席技术官云栖大会要点总结
  • 6. React useState基础使用:useState修改状态的规则;useState修改对象状态的规则
  • 凡科做的网站怎么打不开了天津做再生资源交易的网站
  • AWS Shield 与海外高防服务器的对比分析
  • CTF攻防世界WEB精选基础入门:cookie
  • Vue 中 props 传递数据的坑
  • Descheduler for Kubernetes(K8s 重调度器)
  • Embedding(嵌入):让机器理解世界的通用语言
  • sql练习题单-知识点总结
  • 网站空间域名续费湖南送变电建设公司 网站
  • 国产化PDF处理控件Spire.PDF教程:C#中轻松修改 PDF 文档内容