注意:微信自动屏蔽外链,所以链接打不开,请查看原版材料或者。
原课程链接:
https://hbctraining.github.io/Intro-to-R/lessons/02_introR-syntax-and-data-structures.html
https://github.com/hbctraining/Intro-to-R
第一课:哈佛R语言课程--1.R语言简介 https://www.jianshu.com/p/5d9033292101
学习目标
- 应用R的变量
- 描述R的各种数据类型。
- 构建数据结构以存储数据。
1.R语法
现在我们知道如何通过脚本编辑器或控制台与R交互,我们希望使用R来做比添加数字更多的事情。为此,我们需要了解有关R语法的更多信息。
下面是一个示例脚本,突出显示R(语法)的许多不同“词性”:
- 注释
#
- 变量和函数
- 赋值运算符
<-
- 函数中的参数用
=
注意:缩进和对齐是为了提高清晰度和易读性
示例脚本
# Load libraries
library(Biobase)
library(limma)
library(ggplot2)
# Setup directory variables
baseDir <- getwd()
dataDir <- file.path(baseDir, "data")
metaDir <- file.path(baseDir, "meta")
resultsDir <- file.path(baseDir, "results")
# Load data
meta <- read.delim(file.path(metaDir, '2015-1018_sample_key.csv'), header=T, sep="\t", row.names=1)
2.赋值运算符
要在R中做更多事,需要把值对应到 变量,使用赋值运算符,<-
。例如,可以使用赋值运算符将赋值3
赋值给 x
:
x <- 3
赋值运算符(<-
)将右边的值赋给左边的变量。
在RStudio中,赋值符号快捷键是Alt
和-
。
3.变量
变量是信息的符号名称或引用代号。计算机编程中的变量类似于“桶”,其中可以存储和引用信息。在桶的外面是一个名字。在引用“桶”时,我们使用“桶”的名称,而不是存储在“桶”中的数据。
在上面的例子中,我们创建了一个名为 x
的变量(“桶”)。并放了一个值,3
。
创建另一个名为y
的变量,并赋值为5。
y <- 5
为变量赋值时,R不会向控制台输出任何内容。您可以强制使用括号输出值并或键入变量名来输出值。
y
还可以通过查看RStudio界面右上角的窗口Environment
来查看有关变量的信息。
现在我们可以通过名称引用这些“桶”来对其中包含的值执行数学运算。在控制台中执行:
x + y
尝试将此操作的结果赋值给另一个名为的变量number
。
number <- x + y
练习
- 尝试将变量
x
的值更改为5,number
会变化吗? - 现在尝试更改变量的值
y
以包含值10.您需要做什么来更新变量number
?
关于变量名的提示
变量可以给几乎任何名称,例如x
,current_temperature
或 subject_id
。但是,应该记住一些规则/建议:
- 要明确,但不要太长。
- 避免使用以数字开头的名称(
2x
无效但是x2
可以) - 避免在R中基本函数的名称(例如
if
,else
,for
,看这里的完整列表)。在一般情况下,即使它是允许的,最好不要使用其他的功能的名称(如c
,T
,mean
,data
)作为变量名。如有疑问,请查看帮助以查看该名称是否已被使用。 - 避免在变量名中使用(
.
),比如my.dataset
。由于历史原因,R中有许多带有“.”的函数,但由于“.”在R(对于methods)和其他编程语言中具有特殊含义,最好避免。 - 使用名词作为对象名称和动词来表示函数名称
- 请记住,R区分大小写(例如,
genome_length
与之不同Genome_length
) - 与代码的样式(放置空格,如何命名变量等)保持一致。在R中,两个流行的风格指南是Hadley Wickham的风格指南和Google的风格指南。
4.数据类型
变量可以包含R中特定类型的值.R使用的六种数据类型包括:
-
"numeric"
任何数值 -
"character"
对于文本值,使用引号(“”)表示值 -
"integer"
为整数(例如,2L
中,L
表示与R,它是一个整数) -
"logical"
:TRUE
和FALSE
(布尔数据类型) -
"complex"
用实部和虚部来表示复数(例如1+4i
) -
"raw"
后两种不作进一步讨论
下表提供了每种常用数据类型的示例:
数据类型 | 例子 |
---|---|
数字: | 1,1.5,20,pi |
字符: | “anytext”,“5”,“TRUE” |
整数: | 2L,500L,-17L |
逻辑: | TRUE,FALSE,T,F |
5.数据结构
我们知道变量就像桶一样,到目前为止我们已经看到单个值填充的“桶”。number
创建时,数学运算的结果也是单个值。变量可以存储多个单独的值,它们可以存储多种不同的数据结构。这些包括但不限于向量(c
),因子(factor
),矩阵(matrix
),数据框(data.frame
)和列表(list
)。
(1)向量
向量是R中最常见和最基本的数据结构,几乎是R的主力。它基本上只是一组值,主要是数字,
或者字符串,
或逻辑值,
请注意,向量中的所有值必须具有相同的数据类型。如果您尝试创建具有多个数据类型的向量,R将尝试将其强制转换为单个数据类型。
例如,如果您尝试创建以下向量:
R会强制写入:
向量就好比有不同的隔间的桶; 向量中的这些隔间称为元素。
每个元素都包含一个值,并且一个向量中包含的元素数量没有限制。向量被赋值给单个变量,无论它包含多少元素,最终它仍然是单个实体(桶)。
现在创建一个表示基因组长度的向量,并将其赋值给一个名为glengths
的变量。
该向量的每个元素包含单个数值,并且使用c()
(组合函数)将三个值组合在一起成为向量。所有值都放在括号内并用逗号分隔。
glengths <- c(4.6, 3000, 50000)
glengths
请注意,environment显示glengths
变量是数字,并告诉您glengths
向量从元素1开始,到元素3结束(即向量包含3个值)。
向量也可以包含字符。创建另一个包含三个元素的向量species
,其中每个元素对应于基因组大小向量(以Mb为单位)。
species <- c("ecoli", "human", "corn")
species
练习
通过组合我们刚刚创建的两个向量(glengths
和species
)来创建数值和字符值的向量。将此组合向量赋值给名为的新变量combined
。提示:您需要使用combine c()
函数来执行此操作。combined
在控制台中输出向量,与原始向量相比看起来有什么不同?
(2)因子
因子是一种特殊类型的向量,用于存储分类数据。每个唯一类别被称为factor level(即类别=级别)。因子建立在整数向量之上,使得每个actor level被赋予整数值,从而创建值 - 标签对。
让我们创建一个因子型向量并探索更多。我们首先创建一个描述三种不同表达级别的字符向量:
expression <- c("low", "high", "medium", "high", "low", "medium", "high")
现在我们可以使用函数将此字符向量转换为因子factor()
:
expression <- factor(expression)
那么,factor()
函数实现了什么?
表达向量是分类的,因为向量中的所有值都属于一组类别; 在这个例子中,类别是low
,medium
和high
。通过将表达向量转换为因子,类别按字母顺序分配整数,高= 1,低= 2,中等= 3。这实际上分配了不同的因子水平。您可以在“ environment”窗口中查看新创建的因子变量和level。
练习
在实验分析中使用三组不同的细胞:正常细胞,基因敲除细胞(一个牛X的基因),以及过表达基因A的细胞。每种细胞类型我们有三个重复。
-
samplegroup
使用以下代码创建一个名为的向量。该载体将包含9个元件:3个对照(“CTL”)样品,3个敲除(“KO”)样品和3个过表达(“OE”)样品:
samplegroup <- c("CTL", "CTL", "CTL", "KO", "KO", "KO", "OE", "OE", "OE")
- 转
samplegroup
成因子数据结构。
(3)矩阵
R的矩阵(matrix
)是具有相同长度和相同数据类型的向量的集合。向量按行或按列组合为矩阵,创建二维结构。
矩阵通常用作统计学数学机制的一部分。矩阵的数据类型通常是数值,并在计算算法中用作checkpoint。例如,如果输入数据的数据类型不同(数字,字符等),则matrix()
函数将报错,并停止执行任何下游代码。
(4)数据框
数据框( data.frame
)是大多数表格数据的实际数据结构,以及我们用于统计和绘图的内容。Adata.frame
类似于矩阵,因为它是相同长度的向量集合,每个向量代表一列。但是,在数据框中,每个向量可以是不同的数据类型(例如,字符,整数,因子)。
数据框是在R中存储数据的最常用方式,如果系统地使用,则使数据分析更容易。
我们可以通过将向量按列组合来来创建数据框。我们使用data.frame()
函数执行此操作,并为函数提供我们想要组合在一起的不同向量。此功能仅适用于相同长度的向量。
df <- data.frame(species, glengths)
注意data.frame()
默认将字符向量转换为因子。将数据框输出到控制台:
df
检查数据集,发现虽然species向量是字符向量,但在数据框中被自动转换为因子(删除引号)。我们将在下一课中展示如何更改函数的默认行为。
请注意,您可以通过单击Environment
窗口中的变量名来查看data.frame对象。
列表
列表是R中的一个数据结构,听起来吓人,实际上非常有用。列表是一种数据结构,可以包含任意数量、任何类型的其他数据结构。
如果您希望组合使用不同数据结构的变量,则可以使用list()
函数将所有这些变量放入一个列表对象中,并将要组合的所有项目放在括号中:
list1 <- list(species, df, number)
将列表输出到屏幕以查看组件:
list1
[[1]]
[1] "ecoli" "human" "corn"
[[2]]
species glengths
1 ecoli 4.6
2 human 3000.0
3 corn 50000.0
[[3]]
[1] 5
有三个组件对应于我们传入的三个不同变量,可以看到每个变量的结构都被保留。基于数字位置引用列表的每个组件。我们将在后面的课程中更多地讨论如何检查和操作列表的组件。
练习
创建一个名为list2
的列表,其中包含species
,glengths
和number
。
*本课程由Harvard Chan Bioinformatics Core (HBC)
的教学团队成员开发,中文版由ID@小洁忘了怎么分身(公众号@生信星球)整理。
(抱歉昨天对生物信息中心的中文翻译有误,公众号无法修改,但中修改了。)
友情链接:
生信技能树公益视频合辑:学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!
B站链接:https://m.bilibili.com/space/338686099
YouTube链接:https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists
生信工程师入门最佳指南:https://mp.weixin.qq.com/s/vaX4ttaLIa19MefD86WfUA
学徒培养:https://mp.weixin.qq.com/s/3jw3_PgZXYd7FomxEMxFmw
资料大全:https://mp.weixin.qq.com/s/QcES9u1vYh-l6LMXPgJIlA