R语言入门课| 05 一文掌握R语言常见数据类型

视频教程

大家可以先做一做R语言基础小测验,看看自己是否需要跟我们5.5h入门R语言的课程。

先上教程视频,B站同步播出:

https://www.bilibili.com/video/BV1miNVeWEkw

完整视频回放和答疑服务可见:5.5h入门R语言

本节课程视频:(点击此处查看)

"R语言入门课"是我们认为生信小白入门不得不听的一个课程,我们也为这个课程准备了许多干货。R语言的精髓便是数据处理,在本节课中,我们详细介绍了向量、矩阵、数据框、数组、因子、列表的创建方法与数据访问方式,为以后的生物信息学数据处理打下牢固的基础!

本次课程代码

大家可以跟着视频练习如下代码:

####  创建数据集 ####
###### 一、向量(vector) ######
# 1 定义
# 是用于存储数值型、字符型或逻辑型数据的一维数组。 例如:
a <- c(1,2,3,4,5,6,-2,4)
b <- c("one","two","three",'four')
c1 <- c(TRUE,TRUE,TRUE,FALSE,FALSE)# 布尔值
c2 <- c(T,T,T,F,F)# 布尔值
# a为数值型向量,b字符型(必须加""),c逻辑型向量。
# 单个向量中的数据类型必须相同
c <- c(1,'asjhg')
cclass(c)
as.numeric(c)
# ***标量(scalar)是只含一个元素的向量
g <-1# 2 访问向量中的元素
# **注:R中位置索引从1开始,而不是0**
# 1) 访问单个元素
a <- c("k","q","e","f","a","w","p","m")
a[3]# 2)访问多个元素
a <- c("k","q","e","f","a","w","p","m")
a[   c(1,2,4,6)    ]
# 3)连续访问多个元素
a <- c("k","q","e","f","a","w","p","m")
a[   c(2:6)  ]
length(a)###### 二、矩阵(matrix) ######
# 1 定义
# 是一个**二维变量**,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。
#可以通过函数matrix()创建矩阵,格式如下:
# mymatrix <- matrix(vector,nrow = number_of_rows,
#                    ncol = number_of_columns,
#                    byrow = logical_value,dimnames = list(char_vector_rownames,
#                                                          char_vector_colnames))#vector:矩阵的元素
#nrow:行的维数
#ncol:列的维数#dimnames:可选的、以字符型向量表示的行名和列名,如果没有设定可以不写
#byrow = TRUE:矩阵按行填充,byrow = FALSE:矩阵按列填充。\*\*如果不做设定,默认情况下按列填充。
#   **因此,创建矩阵时至少包括vector,nrow,ncol**# 2 创建矩阵
y <- matrix(1:20,nrow = 5,ncol = 4)
ycells <- c(1,2,3,4)
rnames <- c("R1","R2")
cnames <- c("C1","C2")mymatrix1 <- matrix(cells,nrow = 2,ncol = 2,byrow = FALSE,dimnames = list(rnames,cnames))
mymatrix1#可以看到优先按列填充,且行名为rnames,列名为cnames。
# 下面改变一些参数:
cells <- c(1,2,3,4)
rnames <- c("R1","R2")
cnames <- c("C1","C2")mymatrix2 <- matrix(cells,nrow = 2,ncol = 2,byrow = TRUE,dimnames = list(cnames,rnames))
mymatrix2# 可以看的变成了优先按行填充,行名变为cnames,列名变为rnames。
# 如何访问矩阵中的元素 
# 使用下标和方括号来选择矩阵中的行、列或元素。
# x[i,] 矩阵x中的第i行
# x[,j]:矩阵x中的第j列**
# x[i,j]:矩阵x中第i行第j列个元素
# x[i,c(h,j)]:矩阵x中第i行,第h和j列
# x[c(h:i),j]:矩阵x中第h-i行,第j列# 举例
x <- matrix(21:40,nrow = 4,ncol = 5 )
x
x[1,]
x[,5]
x[c(1,2,3),5]
x[c(2:4),c(2:4)]
dim(x)
nrow(x) 
ncol(x)# 矩阵也只能包含一种数据类型,当维度超过2时,可以使用数组

###### 三、 数组(array) ####### 1 定义# 数组(array)与矩阵类似,但是维度可以大于2,例如可以是三维的。# 通过函数**array()**创建:# myarray <- array(vector,dimensions,dimnames)# vector:数组中的数据# dimensions:数值型向量,给出了各个维度下标的最大值,# 按行,列,面进行排序  # dimnames:可选的、各维度名称标签的列表# 2 创建数组dim1 <- c("A1","A2")dim2 <- c("B1","B2","B3")dim3 <- c("C1","C2","C3","C4")z <- array(1:24,c(2,3,4),dimnames = list(dim1,dim2,dim3))z# 可以看到这里c(2,3,4)表示的3个维度分别为2,3,4个,即2行3列4面。# 3 访问数组中的元素#和矩阵类似,使用下标和方括号来选择。z[1,3,4]#这表示选择是维度1中的1(第一行),维度2中的3(第三列),维度3中的4(第4个矩阵) ***可以某种程度上将数组看出几个矩阵的组合。***dim(z)
###### 四、 数据框(data) ####### 1 定义# 数据框的不同列可以包含不同模式(数值型、字符型、逻辑型)数据,更类似于常见的数据集。# 通过函数**data.frame()**创建:mydata <- data.frame(col1,col2,col3,...)#col1,col2,col3,...:列向量,可以为任何类型的数据,每一列的名称由函数names指定。 **但通常不同列(变量)的向量中的数据(观测值)个数相同,且每一列数据的模式必须相同**
# 2 创建数据框patientID <- c(1,2,3,4)age <- c(25,34,28,52)diabetes <- c("Type1","Type2","Type1","Type1")status <- c("Poor","Improved","Excellent","Poor")patientdata <- data.frame(patientID,age,diabetes,status)patientdata# 3 选取数据框中的元素#1)用方括号和下标来选取,[n]和[n1:n2]格式下标的数字表示第n1到n2变量(列)patientdata[2]patientdata[,1:2]# 而[n1,n2]则选取的依然是第n1行,n2列对应的元素patientdata[3,4]# 2)直接利用函数制定特定变量名来获取patientdata[c("age","status")]patientdata[,c("age","status")]#* 注意变量名是字符型数据,所以要加双引号# 3)利用$符号+变量名(不用双引号)patientdata$status# **with()**函数#在每个变量名前都输入一次patientdata$比较繁琐,可以借助with()函数简化代码#以内置数据框mtcars为例:mtcarssummary(mtcars$mpg)# summary()获取描述性统计量,可以提供最小值、最大值、四分位数和数值型变量的均值,以及因子向量和逻辑型向量的频数统计等。结果输出中的1Q和Q3分别为残差第一四分位数(1Q)和第三分位数(Q3)。***plot(mtcars$mpg,mtcars$disp)with(mtcars,     {       plot(mpg,disp)       plot(mpg,gear)       plot(mpg,carb)     }     )dim(mtcars)  ###### 五、因子(factor) ####### 1 定义#谈因子前首先要了解变量的分类,可以分为:# +----------------------+----------------------------------------------------+----------------------------------------+-----------------------------------+# | 变量分类             | 定义                                               | 包括                                   | 具体举例                          |# +======================+====================================================+========================================+:==================================+# | 名义变量(分类变量) | 没有顺序之分的分类变量                             | 性别,省份,职业、分型等               | Diabetes(Type1、Type2)            |# |                      |                                                    |                                        |                                   |# | nominal variable     |                                                    |                                        |                                   |# +----------------------+----------------------------------------------------+----------------------------------------+-----------------------------------+# | 顺序变量             | 一种顺序关系而非数量关系                           | 班级,名次,病情等                     | Status(poor、improved、excellent) |# |                      |                                                    |                                        |                                   |# | ordinal variable     |                                                    |                                        |                                   |# +----------------------+----------------------------------------------------+----------------------------------------+-----------------------------------+# | 连续变量             | 可呈现为某个范围内的任意值,并同时表示了顺序和数量 | 连续的数值,可以进行求和,平均值等运算 | age(15、21、33)                   |# |                      |                                                    |                                        |                                   |# | continuous variable  |                                                    |                                        |                                   |# +----------------------+----------------------------------------------------+----------------------------------------+-----------------------------------+# **其中名义变量和顺序变量称为因子**
# 2 名义变量作为因子时#函数factor()以一个整数向量的形式存储类别值,#整数的取值范围是[1...k](其中k是名义变量中唯一值的个数)。同时,一个由字符串(原始值)组成的内部向量将映射到这些整数上。diabetes <- c("Type1","Type2","Type1","Type1")diabetesdiabetes1 <- factor(diabetes)diabetes1str(diabetes)str(diabetes1)#可以看到用factor()将向量存储为(1,2,1,1),并在内部将其关联为1=Type1,2=Type2.# 3 顺序变量作为因子时#表示顺序变量时,要指定ordered=TRUEstatus<- c("poor","improved","excellent","poor")status1 <- factor(status,ordered = TRUE)str(status)str(status1)# 对于字符型向量,因子的水平(level)默认依字母顺序创建,但很少情况是理想的,# 可以用levels选项覆盖默认排序,重新排序:**status<- c("poor","improved","excellent","poor")status2 <- factor(status,ordered = TRUE,                  levels = c("poor","improved","excellent"))str(status1)str(status2)# 这样排序从原来的3213变成了1231。# 数值型变量可以用参数levels和labels来编码因子 例如,男性被编码为1,女性被编码为2:sex <- c(1,2,2,1)sex<- factor(sex,levels = c(1,2),labels = c("Male","Female"))sex# **归根结底,因子和非因子到底什么区别?我们用一张图就可以直观感受** plot函数的数据集是向量的作图输出散点图:mtcars$cylplot(mtcars$cyl)# plot函数的数据集是因子的作图输出条形图:mtcars$cylmtcars1 <- factor(mtcars$cyl)plot(mtcars1)mtcars2 <- factor(mtcars$cyl,levels = c('8','6','4'))plot(mtcars2)
###### 六、列表(list) ####### 1 定义#一些对象(或成分)的有序集合。一个列表中可能包含若干对象(可能无关的)如向量,矩阵,数据框甚至其他列表。#用函数**list()**创建,也可以对列表中的对象命名:#mylist <- list(object1,object2,...)#mylist <- list(name1=object1,name2=object2,...)
# 2 创建一个列表g <- "My Frist list"h <- c(25,23,11,13)j <- matrix(1:10,nrow = 5)k <- c("one","two","three")mylist <- list(title=g,ages=h,               j,k)mylist#这个列表中包含了字符型、数值型向量,矩阵。
# 3 选取列表中的元素#一般用[[]],双重方括号加数字或名称来访问mylist[[2]]mylist[["title"]]mylist["title"]

R语言入门课

1、课程简介

生信基地希望能够给大家提供系统性形成性规范性的生信教学。前面几次活动中同学们表示希望能够有线下集中学习以及针对性的指导、答疑。所以,此次我们已推出"生信R语言入门课",分为"R介绍"、"R语言数据对象"、"基本数据管理"、"图形初级(ggplot2)"四个模块共12节课。当然,我们也不做生信快餐,本次活动回放已剪辑完毕,方便错过活动的小伙伴加入。

2、R语言介绍

R语言是一种专门为统计分析、数据可视化和计算而设计的编程语言,广泛应用于各个领域。R语言支持各种统计分析方法,如线性回归、方差分析、聚类分析等,同时也能够进行复杂的图形和数据可视化。R语言凭借其开源、免费、工具包丰富、数据处理能力强、可视化丰富的特性在生物信息学中被广泛应用。例如RNA-Seq差异分析常用的DESeq2、edgeR的引用次数多达数万次。我们制作的单细胞教程几乎也全是基于R语言环境。很多同学找我们学习单细胞的时候都表示不想学习R语言,直接学习单细胞分析,不积跬步无以至千里,这显然是不现实的,所以,欢迎大家来参加此次的课程。

资料&课表

目前12节总计5.5h的视频课程回放已剪辑完毕,方便错过直播的同学随时加入学习:

除了学习视频外,还给大家准备了学习资料,包括学习手册、课后习题。大家人手一份资料可以跟着视频联系:

课程目录:

1 、R介绍

1.1 R 下载与安装

1.1.1 RStudio

1.1.2 R的帮助函数

1.1.3 用于管理R工作区的函数

1.2 包(Packages)

1.2.1 包的基本函数

1.2.2 包处理大型数据集的示例展示

2、 R语言数据对象

2.1 理解数据集

2.2 数据结构

2.2.1 向量(vector)

2.2.2 矩阵(matrix)

2.2.3 数组(array)

2.2.4 数据框(data)

2.2.5 因子(factor)

2.2.6 列表(list)

2.3 数据输入

2.3.1 从带分隔符的文本文件导入数据

2.3.2 导入Excel数据

3、基本数据管理

3.1 创建新变量

3.2 变量的重编码(recoding)

3.3 变量的重命名

3.4.缺失值(NA)

3.5 类型判断和转换

3.6 数据排序

3.7 数据集的合并

3.8 选取变量

3.9 选取观测值

3.10 subset()函数选择观测值或变量

3.11 剔除变量

3.12 dplyr包

3.13 使用管道操作符对语句进行串接

4、图形初级(ggplot2)

4.1 使用ggplot2包创建图形

4.1.1 函数ggplot2()

4.1.2 geom()函数

4.1.3 分组

4.1.4 标尺

4.1.5 刻面

4.1.6 标签

4.1.7主题

4.2 ggplot2包的详细信息

4.2.1 放置数据和映射选项

4.2.2 将图形作为对象使用

4.2.3 保存图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/911919.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/911919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vRDMA 发布,助力云上 VPC 内高性能通信

资料来源&#xff1a;火山引擎-开发者社区 近日&#xff0c;火山引擎基于部分云服务器实例规格邀测发布 vRDMA 特性&#xff0c;提供云上 VPC 内大规模 RDMA 加速能力&#xff0c;可兼容传统 HPC 应用、AI 应用以及传统 TCP/IP 应用&#xff0c;降低大众化场景的适配门槛&#…

Win10安装dify

一、win10虚拟化设置&#xff0c;控制面板中开启如下三个服务 二、检查确认wls服务开启 设置自动启动并启动 确认服务开启 bcdedit 是否为auto&#xff0c;如果不是&#xff0c;设置为auto bcdedit /set hypervisorlaunchtype autocpu是否为虚拟化 更新wsl wsl --update二 …

【ai学习笔记】GitLab

CI/CD&#xff08;持续集成/持续交付&#xff09;是现代软件开发中的关键实践&#xff0c;通过自动化工具可以大幅提升开发效率和软件质量。下面为你介绍CI/CD的核心概念、常用工具以及示例配置&#xff1a; 1. CI/CD 核心概念 持续集成&#xff08;CI&#xff09;&#xff1…

Solidity 从 0 到 1 |Web3 开发入门免费共学营

开启你的 Web3 开发之旅&#xff0c;从 Sonic 开始&#xff01; 想进入区块链开发的世界&#xff0c;却不知道从哪里开始&#xff1f;选择对的语言和平台&#xff0c;才能事半功倍。 Solidity 是 Web3 中最主流、最通用的智能合约开发语言&#xff0c;被广泛应用于以太坊及其…

【unitrix】 4.4 类型级整数比较系统(cmp.rs)

一、源码 这段代码实现了一个类型级别的整数比较系统&#xff0c;允许在编译时进行整数比较操作。它定义了一套类型来表示比较结果&#xff0c;并为不同类型的整数实现了比较逻辑。 use core::cmp::Ordering; use core::default::Default; use crate::sealed::Sealed; use cr…

2025年渗透测试面试题总结-2025年HW(护网面试) 14(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 1. SQL注入原理 &#x1f4a5; 2. XXE攻击&#xff08;XML外部实体注入&#xff09; &#x1f9e9; 3. SQ…

Android开发根据滑动距离标题栏进行渐变

Android开发根据滑动距离标题栏进行渐变 假设滑动控件是NestedScrollView。 先监听NestedScrollView的滑动距离&#xff1a; nslv_preview_me.setOnScrollChangeListener(object :NestedScrollView.OnScrollChangeListener{override fun onScrollChange(v: NestedScrollView…

高中成绩可视化平台开发笔记

高中成绩可视化平台&#xff08;1&#xff09; 一、项目概述 本系统是一个基于 PyQt5 和 Matplotlib 的高中成绩数据可视化分析平台&#xff0c;旨在帮助教师快速了解学生成绩分布、班级对比、学科表现等关键指标。平台支持文科与理科的数据切换&#xff0c;并提供多个维度的图…

自动化按需导入组件库的工具rust版本完成开源了

背景 当我为每个Vue项目使用ui组件库的时候&#xff0c;都会使用按需导入的方式来使用ui组件库。但是每次按需导入&#xff0c;不可避免的就需要做以下三步。我们以element plus ui组件库为例。 1. 安装依赖 第一步&#xff0c;当然是需要安装依赖。命令如下: pnpm add unp…

Linux内核中TCP分段的核心机制:tcp_fragment函数解析

引言:TCP分段的必要性 在TCP/IP协议栈中,MSS(最大分段大小) 限制了单次传输的数据量。当应用层发送的数据超过当前路径的MSS时,内核必须执行分段操作。tcp_fragment函数正是Linux内核中处理TCP分段的核心机制,它巧妙地在协议合规性、内存安全和性能效率之间取得平衡。 一…

【赵渝强老师】OceanBase OBServer节点的SQL层

OceanBase OBServer节点的SQL层将用户的SQL请求转化成对一个或多个Tablet的数据访问。SQL层会按照以下顺序经过一系列组件来处理一个SQL&#xff1a; Parser -->Resolver-->Transformer-->Optimizer-->CodeGenerator-->Executor。视频讲解如下 【赵渝强老师】O…

从“高配”到“普惠”,黑芝麻智能携手Nullmax打造辅助驾驶主流量产方案

近日&#xff0c;黑芝麻智能携手Nullmax打造的辅助驾驶主流量产方案正式发布。该方案面向8-15万元级别主流车型&#xff0c;基于单颗黑芝麻智能武当C1236跨域计算芯片&#xff0c;集成Nullmax全栈自研的软件技术架构&#xff0c;结合领先的视觉感知算法&#xff0c;打造高性能辅…

信息安全认证体系全解析:从资质证明到行业准入的实践指南

Hello&#xff01;大家好&#xff0c;小编是一名专注IT领域的资深探索家&#xff0c;大家发现了吗&#xff1f;现在刷招聘软件&#xff0c;国企安全岗必标 "CISP 优先"&#xff0c;外企招聘悄悄写着 "CISSP 加分"—— 这些带字母的证书到底是啥&#xff1f…

优雅地创建实体类——Builder 链式调用

我们来看以下的代码。改造前构造实体类用重载构造器或用 setter 对变量进行赋值&#xff0c;一旦变量变多则需要对每个变量进行 set 赋值&#xff0c;并且有可能会赋值错对象。 private static void test() {//1.构造器赋值Task task1 new Task("2023000000009439"…

如何轻松将照片从 iPhone 传输到 Android?

从 iPhone 换到 Android 手机后&#xff0c;你肯定不想丢掉珍贵的照片回忆吧&#xff1f;好在&#xff0c;本文分享了 6 种有效的解决方案&#xff0c;教你如何轻松地将照片从 iPhone 传输到 Android。 第 1 部分&#xff1a;如何通过 iReaShare Phone Transfer 将照片从 iPhon…

AI编程:[体验]存量微服务架构下植入WebSocket的“踩坑”与“填坑”

一、核心需求 功能需求&#xff1a;用户可以通过语音与AI对话&#xff0c;并实现类似ChatGPT的实时交互&#xff08;流式响应&#xff0c;打字机效果&#xff09;技术需求&#xff1a;在现有微服务架构中进行扩展&#xff08;SpringCloud&#xff09; 二、技术盲点 陌生领域 …

uniapp事件onLoad区分大小写

区分大小写。不然会不起作用。onLoad方法中的功能均不会被执行。 除了功能逻辑要检查外。大小写是要认真检查的一部分

《打破微前端困局:样式冲突与资源隔离破局指南》

微前端架构凭借其独特优势&#xff0c;正逐渐成为众多大型项目的首选架构模式。它将一个庞大的前端应用拆解为多个相对独立的子应用&#xff0c;每个子应用可以独立开发、部署和维护&#xff0c;极大地提升了开发效率与团队协作的灵活性。然而&#xff0c;随着微前端架构的广泛…

OpenCV——边缘检测

边缘检测 一、边缘检测二、边缘检测算子2.1、Sobel算子2.2、Scharr算子2.3、Laplacian算子 三、Canny边缘检测3.1、Canny边缘检测的步骤3.2、Canny算法的实现 一、边缘检测 边缘是指图像中像素的灰度值发生剧烈变化的区域&#xff1a; 图像中的边缘主要有以下几种成因&#x…

2506认证资讯|工信部出手整治多品牌充电宝,WMC上海稍逊往年,RED修订Common Charger,WiFi7 FCC测试

01 — 中国 工信部拟制定移动电源强制性国家标准 该标准将从以下方面全面提升移动电源安全性&#xff1a; 1. 拟在GB 31241、GB 4943.1基础上&#xff0c;新增或加严过充电、针刺等试验要求。 2. 拟提出影响电池安全的正负极材料、隔膜等关键材料要求。 3. 拟规范锂离子电池…