在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
chapter 5 introduction to R5.3 Data-types/classes5.3.1 Numeric(数字)可以通过class函数查看数据的类型: 如:y=42 class(y) 输出:numeric y=as.integer(42) class(y) 输出:integer 当然,改变类型与原类性不符的时候, 将会报错: as.numeric("h") 输出:warning 5.3.2 Character/String(字符/字符串)“character”类存储各种文本数据。 编程约定将包含多个字母的数据称为“字符串”,因此大多数作用于字符数据的R函数将数据称为“字符串”,并且通常在其名称中包含“str”或“string”。 字符串通过双引号标识,而变量/函数名称不是: x=5 a=“x” # character “x” a 输出:“x” b=x # variable x b 输出:5 除了标准的字母数字字符外,字符串还可以存储各种特殊字符。 使用间隙后跟单个字符来识别特殊字符,最相关的是tab的特殊字符:\ t和换行:\ n。 为了演示这些特殊字符,可以将两个字符串连接起来(cat),这些字符分隔(sep)它们: cat(“hello”,“world”,sep=“ ”) 输出:hello world cat("Hello", "World", sep= "\t") 输出:Hello World cat("Hello", "World", sep= "\n") 输出:Hello World 请注意,特殊字符在不同的功能中有不同的作 例如,粘贴功能与cat的功能相同,但不识别特殊字符。 paste("Hello", "World", sep= "\n") 输出:"Hello\nWorld" 单反斜杠或双反斜杠也可用作转义字符来关闭特殊字符或允许引号包含在字符串中: cat("This \"string\" contains quotation marks.") 输出:This "string" contains quotation marks. 特殊字符通常仅用于模式匹配,以及将数据读取/写入文件。 例如,这是您将标签分隔文件读入R的方式。 dat = read.delim("file.tsv", sep="\t") 另一种特殊类型的字符数据是颜色。 颜色可以通过三种主要方式指定:使用可用的名称,使用rgb功能的红色,绿色,蓝色值,以及使用色调(颜色),饱和度(颜色对白色)和值(颜色/白色对黑色)使用 hsv函数。 默认情况下,rgb和hsv期望0-1中有三个值,透明度可选的第四个值。 或者,可以从许多不同的包中加载具有有用属性的预定颜色组,其中RColorBrewer是最受欢迎的颜色之一。 reds = c("red", rgb(1,0,0), hsv(0, 1, 1)) barplot(c(1,1,1), col=reds, names=c("by_name", "by_rgb", "by_hsv")) 5.3.3 Logical(逻辑值)逻辑类存储布尔真值,即TRUE和FALSE。 它用于存储逻辑运算的结果,条件语句将被强制转换为此类。 大多数其他数据类型可以强制转换为布尔值而不会触发(或“抛出”)错误消息,这可能会导致意外行为。 当输入TRUE,“T"和任何大于0的值,当其class强制转换成as.logical时,其class都会输出TRUE,其余为FALSE。 5.3.4 Factors(因子)字符串/字符数据存储效率非常低,每个字母通常需要与任何整数相同的内存量。 因此,当存储具有重复元素的字符串向量时,更有效地将每个元素分配给整数并将向量存储为整数和附加的字符串到整数关联表。 因此,默认情况下,R将读取数据表的文本列作为因子。
因素的双重性质可能导致一些不直观的行为。 例如。 将两个因素结合在一起会将它们转换为数字形式,原始字符串将丢失。
同样,如果由于格式化问题,数字数据被错误地解释为字符串,那么在强制转换为数值之前必须将因子转换回字符串:
要使R读取文本作为字符数据而不是因子设置环境选项stringsAsFactors = FALSE。这必须在每个R会话开始时完成
5.3.5 Checking class/type(检查类性)
5.4 Basic data structures(基本数据结构)到目前为止,我们只关注单个值和向量。 向量是R中最简单的数据结构。它们是所有相同类型的一维数据数组。 如果创建向量时的输入具有不同类型,则它将被强制转换为与数据最一致的数据类型。
在这里,我们尝试将字符,数字和逻辑数据放入单个向量中,以便将所有值强制转换为字符数据。
引号表示数字向量已被强制转换为字符。 或者,要使用不同数据类型的列存储数据,我们可以使用dataframe。
如果你已经设置了stringsAsFactors = FALSE,你会发现第一列仍然是字符,否则它将自动转换为一个因子。 矩阵和dataframe之间的另一个区别是能够使用$运算符选择列。 最终的基本数据结构是列表。 列表允许将不同类型和不同长度的数据存储在单个对象中。 列表的每个元素可以是任何其他R对象:任何类型的数据,任何数据结构,甚至其他列表或函数。
当从不适合任何先前数据结构的函数返回大量结果时,列表最常用。 5.6 Data Types(数据类型)整洁的数据是Hadley Wickham(Wickham,2014)主要定义的概念。 整洁的数据具有以下三个特征:
整洁的数据通常比不整齐的数据更容易使用,特别是如果您正在使用ggplot等软件包。 幸运的是,可以使用软件包来整理不整洁的数据。 今天我们将探讨tidyr包中可用的一些功能,这些功能可用于使不整洁的数据变得整洁。 如果您有兴趣了解有关整理数据的更多信息,我们建议您阅读Garrett Grolemund和Hadley Wickham撰写的“R for Data Science”。 电子版可在此处获取:http://r4ds.had.co.nz/ 上面的不整齐数据是不整洁的,因为两个变量(Wins和Loss)存储在一列(Category)中。 这是数据不整齐的常见方式。 为了整理这些数据,我们需要将Wins和Loss设置为列,并将值存储在这些列中的Counts中。 幸运的是,tidyverse包中有一个函数来执行此操作。 该函数称为spread,它有两个参数,key和value。 您应该将包含多个变量的列的名称传递给key,并将包含多个变量值的列的名称传递给value。 例如: 数据可能不整齐的另一种常见方式是列是值而不是变量。 例如,下面的数据框显示了一些学生在5月和6月的测试中获得的百分比。 数据不整齐,因为5月和6月的列是值,而不是变量。 数据可能不整齐的另一种常见方式是列是值而不是变量。 例如,下面的数据框显示了一些学生在5月和6月的测试中获得的百分比。 数据不整齐,因为5月和6月的列是值,而不是变量。
这些例子与单细胞RNA-seq分析没有多大关系,但旨在帮助说明整洁和不整洁数据的特征。 如果您的数据以整齐的格式存储,您会发现分析单细胞RNA-seq数据要容易得多。 幸运的是,我们通常用于促进单细胞RNA-seq分析的数据结构通常鼓励以整齐的方式存储您的数据。 5.6.2 Rich Data如果你谷歌“丰富的数据”,你会发现这个术语有很多不同的定义。 在本课程中,我们将使用“丰富数据”来表示通过组合来自多个来源的信息生成的数据。 例如,您可以通过在R中创建一个对象来生成丰富的数据,该对象包含单细胞RNA-seq实验中细胞中基因表达值的矩阵,还有关于如何进行实验的信息。 我们将在下面讨论的SingleCellExperiment类的对象是丰富数据的示例。 5.6.2 Bioconductor来自维基百科:Bioconductor是一个免费的,开源的开放式开发软件项目,用于分析和理解分子生物学中湿实验室实验产生的基因组数据。 Bioconductor主要基于统计R编程语言,但确实包含其他编程语言的贡献。 它每年有两个版本,遵循R的半年版本。在任何时候都有一个发布版本,它对应于R的发布版本,以及一个开发版本,它对应于R的开发版本。大多数用户将 找到适合他们需求的发布版本。 我们强烈建议所有新人,甚至经验丰富的高通量数据分析师使用完善和维护的Bioconductor方法和类。 5.6.4 SingleCellExperiment classSingleCellExperiment(SCE)是用于存储来自单细胞实验的数据的S4类。 这包括存储和检索尖峰信息的专门方法,每个细胞的降维坐标和尺寸因子,以及基因和文库的常用元数据。
在SingleCellExperiment中,用户可以为测定条目指定任意名称。 为了协助软件包之间的互操作性,作者提供了针对特定类型数据的名称的一些建议:
这些建议名称中的每一个都具有适当的getter / setter方法,以便于操作SingleCellExperiment。 例如,我们可以采用(非常具体命名的)计数槽,对其进行标准化并将其分配给normcounts: 5.7.3 scater packagescater是用于单细胞RNA-seq分析的R包(McCarthy等,2017)。 该软件包包含几种有用的方法,用于在进一步下游分析之前对数据进行质量控制,可视化和预处理。 scater具有以下功能:
我们强烈建议使用scater进行所有单细胞RNA-seq分析,scater是课程第一部分的基础。 #先写到这儿⑧ |
请发表评论