文本文件
读写文本文件应该是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
您好:我想请教您怎么能从零基础学好R并应用于生物信息学中?我自己看了很久收获特别少
无它,唯手熟尔。