01 R语言基础(1) Read.delim

Python012

01 R语言基础(1) Read.delim,第1张

R Read.delim Example

read.delim() function reads a file into list. The file by default is separated by tab, it can be comma delimited or any other delimiter specified by parameter "sep=". If the parameter "header=" is "TRUE", then the first row will be treated as the row names. 

read.delim(file, header = FALSE,sep = "\t",quote = "\"",          dec = ".", fill = TRUE, comment.char = "", ...)

read.delim2(file, header = TRUE,sep = "\t",quote = "\"",          dec = ",", fill = TRUE, comment.char = "", ...)

• file: file name

• header: 1st line as header or not, logical

• sep: field separator

• quote: quoting characters

... 

read.delim() is almost the same as read.table(), except the field separator is tab by default. It is convenient for open tab delimited file. 

----------------------------------------------------------------------------------------------------------

数read.table是读取矩形格子状数据最为便利的方式。因为实际可能遇到的情况比较多,所以预设了一些函数。这些函数调用了read.table但改变了它的一些默认参数。

注意,read.table不是一种有效地读大数值矩阵的方法:见下面的scan函数。

一些需要考虑到问题是:

编码问题

如果文件中包含非-ASCII字符字段,要确保以正确的编码方式读取。这是在UTF-8的本地系统里面读取Latin-1文件的一个主要问题。此时,可以如下处理

read.table(file("file.dat", encoding="latin1"))

注意,这在任何可以呈现Latin-1名字的本地系统里面运行。

首行问题

我们建议你明确地设定header参数。按照惯例,首行只有对应列的字段而没有行标签对应的字段。因此,它会比余下的行少一个字段。(如果需要在 R 里面看到这一行,设置header = TRUE。)如果要读取的文件里面有行标签的头字段(可能是空的),以下面的方式读取

read.table("file.dat", header = TRUE, row.names = 1)

列名字可以通过col.names显式地设定;显式设定的名字会替换首行里面的列名字(如果存在的话)。

分隔符问题

通常,打开文件看一下就可以确定文件所使用的字段分隔符,但对于空白分割的文件,可以选择默认的sep = ""(它能使用任何空白符作为分隔符,比如空格,制表符,换行符),sep = " "或者sep = "t"。注意,分隔符的选择会影响输入的被引用的字符串。

如果你有含有空字段的制表符分割的文件,一定要使用sep = "t"。

引用 默认情况下,字符串可以被"或'括起,并且两种情况下,引号内部的字符都作为字符串的一部分。有效的引用字符(可能没有)的设置由参数quote控制。对于sep = "n",默认值改为quote = ""。

如果没有设定分隔字符,在被引号括起的字符串里面,引号需要用 C格式的逃逸方式逃逸,即在引号前面直接加反斜杠。

如果设定了分隔符,在被引号括起的字符串里面,按照电子表格的习惯,把引号重复两次以达到逃逸的效果。例如

'One string isn''t two',"one more"

可以被下面的命令读取

read.table("testfile", sep = ",")

这在默认分隔符的文件里面不起作用。

缺损值 默认情况下,文件是假定用NA表示缺损值,但是,这可以通过参数na.strings改变。参数na.strings是一个可以包括一个或多个缺损值得字符描述方式的向量。

数值列的空字段也被看作是缺损值。

在数值列,值NaN,Inf和-Inf都可以被接受的。

尾部空字段省略的行

从一个电子表格中导出的文件通常会把拖尾的空字段(包括?堑姆指舴? 忽略掉。为了读取这样的文件,必须设置参数fill = TRUE。

字符字段中的空白

如果设定了分隔符,字符字段起始和收尾处的空白会作为字段一部分看待的。为了去掉这些空白,可以使用参数strip.white = TRUE。

空白行

默认情况下,read.table忽略空白行。这可以通过设置blank.lines.skip = FALSE来改变。但这个参数只有在和fill = TRUE共同使用时才有效。这时,可能是用空白行表明规则数据中的缺损样本。

变量的类型

除非你采取特别的行动,read.table将会为数据框的每个变量选择一个合适的类型。如果字段没有缺损以及不能直接转换,它会按logical,integer,numeric和complex的顺序依次判断字段类型。如果所有这些类型都失败了,变量会转变成因子。

参数colClasses和as.is提供了很大的控制权。as.is会抑制字符向量转换成因子(仅仅这个功能)。colClasses运行为输入中的每个列设置需要的类型。

注意,colClasses和as.is对 每 列专用,而不是 每 个变量。因此,它对行标签列也同样适用(如果有的话)。

注释

默认情况下,read.table用#作为注释标识字符。如果碰到该字符(除了在被引用的字符串内),该行中随后的内容将会被忽略。只含有空白和注释的行被当作空白行。

如果确认数据文件中没有注释内容,用comment.char = ""会比较安全 (也可能让速度比较快)。

逃逸

许多操作系统有在文本文件中用反斜杠作为逃逸标识字符的习惯,但是Windows系统是个例外(在路径名中使用反斜杠)。在 R 里面,用户可以自行设定这种习惯是否用于数据文件。

read.table和scan都有一个逻辑参数allowEscapes。从 R 2.2.0 开始,该参数默认为否,而且反斜杠是唯一被解释为逃逸引用符的字符(在前面描述的环境中)。如果该参数设为是,以C形式的逃逸规则解释,也就是控制符如a, b, f, n, r, t, v,八进制和十六进制如40和x2A一样描述。任何其它逃逸字符都看着是自己,包括反斜杠。

常用函数read.csv和read.delim为read.table设定参数以符合英语语系本地系统中电子表格导出的CSV和制表符分割的文件。这两个函数对应的变种read.csv2和read.delim2是针对在逗号作为小数点的国家使用时设计的。

如果read.table的可选项设置不正确,错误信息通常以下面的形式显示

Error in scan(file = file, what  what, sep = sep 

或者

Error in read.table("files.dat", header = TRUE) : more columns than column names

这些信息可能足以找到问题所在,但是辅助函数count.fields可以进一步的深入研究问题所在。

读大的数据格子(data grid)时,效率最重要。设定comment.char = "",以原子向量类型(逻辑型,整型,数值型,复数型,字符型或原味型)设置每列的colClasses,给定需要读入的行数nrows(适当地高估一点比不设置这个参数好)等措施会提高效率。

链接: http://www.bio-info-trainee.com/4385.html

我做题的时候主要翻阅学习了《R语言实战》里统计相关内容。

需要掌握R内置数据集及R包数据集

鸢尾花(iris)数据集,包含150个鸢尾花的信息,共五列,分别为萼片长度(Sepal.Length)、萼片宽度(Sepal.Width)、花瓣长度(Petal.Length)、花瓣宽度(Petal.Width)和种类(Species)。前四列为定量数据,后一列种类为定性数据,是非连续的字符变量。

定量数据的集中趋势指标主要是:众数、分位数和平均数

定量数据的离散趋势指标主要是:极差,方差和标准差,标准分数,相对离散系数(变异系数),偏态系数与峰态系数

分组统计,最一开始是想将数据集分成三个数据框,重复之前函数,有几个方法:

或者不分开,之前对原数据集计算:

apply函数可以解决数据循环处理的问题,可以对矩阵、数据框、数组(二维、多维),按行或列进行循环计算,对子元素进行迭代,并把子元素以参数形式给自定义的FUN函数中,并返回计算结果。

函数定义:

apply(X,MARGIN,FUN,...)

参数列表:

用来对list、data.frame进行循环,并返回和X长度同样的list结构作为结果集。

同lapply函数,多了2个参数simplify和USE.NAMES,返回值为向量,不是list对象。

类似sapply函数,提供了FUN.VALUE参数,用来控制返回值的行名。

类似sapply函数,第一个参数为FUN,可接受多个数据。

tapply函数用于分组的循环计算,相当于group by的操作。

函数定义:

tapply(X,INDEX,FUN,simplify,...)

参数列表:

只处理list类型数据,对list的每个元素进行递归遍历,如果list包括子元素则继续遍历。

R可以计算多种相关系数,包括Pearson相关系数、Spearman相关系数、Kendall相关系数、偏相关系数、多分格相关系数、多系列相关系数。cor()函数可以计算前三种相关系数,cov()函数可以计算协方差。

数据的标准化是指中心化之后的数据在除以数据集的标准差,即数据集中的各项数据减去数据集的均值再除以数据集的标准差。scale()函数可以完成标准化。

mtcars数据集是32辆汽车在11个指标上的数据。

airway包是8个样本的RNA-seq数据的counts矩阵,这8个样本分成2组,每组是4个样本,分别是 trt 和 untrt 组。

t检验是一种可用于比较的假设检验。

理解t检验:一个年纪共有好多学生,需要研究他们的平均身高。这时,这批学生是我们 要研究的对象 ,即 总体 。从这个年纪中每个班级随机挑选10名同学,这部分同学则为 样本 ,通过样本来对总体的某个统计特征(比如上面研究的平均值、众数、方差等)做判断的方法为 假设检验 。

一个针对两组的独立样本t检验可以用于检验两个总体的均值相等的假设,检验调用格式为:

t.test( y ~ x, data )

其中y是一个数值型变量,x是一个二分变量。

t.test(y1,y2)

其中y1、y2为数值型向量。

现在还不能用自己的语言解释清楚,整合几篇写的比较详细的教程:

http://www.biye5u.com/article/R/2019/6399.html

https://www.jianshu.com/p/67be9b3806cd

统计这部分还是似懂非懂的状态,继续学习~

更多学习资源:

生信技能树公益视频合辑

生信技能树账号

生信工程师入门最佳指南

生信技能树全球公益巡讲

招学徒

...

你的宣传能让数以万计的初学者找到他们的家,技能树平台一定不会辜负每一个热爱学习和分享的同道中人