生物信息学生R入门教程–输入与输出

文本文件

读写文本文件应该是I/O操作中最简单的一种了。首先我们来准备一个文本文件,然后用不同的方法来读取它。

> test.txt <- data.frame(ArrayDataFile = paste("GSM28676", 1:8, sep = ""), FactorValue = rep(c("control", 
+     "mutation"), each = 4))
> test.txt
##   ArrayDataFile FactorValue
## 1     GSM286761     control
## 2     GSM286762     control
## 3     GSM286763     control
## 4     GSM286764     control
## 5     GSM286765    mutation
## 6     GSM286766    mutation
## 7     GSM286767    mutation
## 8     GSM286768    mutation
> ## 将其写入到临时文件中
> tftsv <- tempfile()
> tfcsv <- tempfile()
> write.table(test.txt, tftsv, quote = FALSE, sep = "\t", row.names = FALSE)
> write.csv(test.txt, tfcsv, row.names = FALSE)

写文本文件一般使用write.table,write.csv,write.csv2。上面的代码已经显示了使用R在写入文本文件时是多么的简单。

我们现在需要把它读入R,可以使用read.table函数。read.table还有几个快捷的形式,比如read.delim,read.delim2,read.csv,read.csv2。这几个快捷的方式帮助我们减少参数的书写。一般的,如果是csv文件,它的分隔符是逗号,字符串的两边会加上引号,可以直接使用read.csv(“文件名”)的方式读入数据。如果是tab分隔的tsv文件,可以直接使用read.delim(“文件名”)的方式读入数据。

> tsv1 <- read.delim(tftsv)
> tsv1
##   ArrayDataFile FactorValue
## 1     GSM286761     control
## 2     GSM286762     control
## 3     GSM286763     control
## 4     GSM286764     control
## 5     GSM286765    mutation
## 6     GSM286766    mutation
## 7     GSM286767    mutation
## 8     GSM286768    mutation
> tsv2 <- read.table(tftsv, quote = "", sep = "\t", header = TRUE)
> identical(tsv1, tsv2)  ##测试读取的是否相同
## [1] TRUE
> csv1 <- read.csv(tfcsv)
> csv1
##   ArrayDataFile FactorValue
## 1     GSM286761     control
## 2     GSM286762     control
## 3     GSM286763     control
## 4     GSM286764     control
## 5     GSM286765    mutation
## 6     GSM286766    mutation
## 7     GSM286767    mutation
## 8     GSM286768    mutation
> csv2 <- read.table(tfcsv, sep = ",", header = TRUE)
> identical(csv1, csv2)
## [1] TRUE

有时候我们只需要读取文件的前几行,那么可以在上面的函数当中加入nrows参数,比如

> read.delim(tftsv, nrows = 5)
##   ArrayDataFile FactorValue
## 1     GSM286761     control
## 2     GSM286762     control
## 3     GSM286763     control
## 4     GSM286764     control
## 5     GSM286765    mutation

有时候我们需要读取文件中间的几行,那么可以在上面的函数当中加入skip及nrows参数,比如

> read.delim(tftsv, header = F, nrows = 4, skip = 3)
##          V1       V2
## 1 GSM286763  control
## 2 GSM286764  control
## 3 GSM286765 mutation
## 4 GSM286766 mutation

2 thoughts on “生物信息学生R入门教程–输入与输出

  1. 您好:我想请教您怎么能从零基础学好R并应用于生物信息学中?我自己看了很久收获特别少

发表评论

电子邮件地址不会被公开。 必填项已用*标注