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

xls文件

读取xls、xlsx文件的软件包有很多,但是经笔者长时间的测试,gdata是较为稳定可靠的软件包。

> library(gdata)
> xlsfile <- file.path(path.package("gdata"), "xls", "iris.xls")
> iris <- read.xls(xlsfile)
> tail(iris)  ##查看末6行
##     Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
## 145          6.7         3.3          5.7         2.5 virginica
## 146          6.7         3.0          5.2         2.3 virginica
## 147          6.3         2.5          5.0         1.9 virginica
## 148          6.5         3.0          5.2         2.0 virginica
## 149          6.2         3.4          5.4         2.3 virginica
## 150          5.9         3.0          5.1         1.8 virginica

使用Excel对于生物信息学来说有很多潜在的危险。在文献Mistaken Identifiers: Gene name errors can be introduced inadvertently when using Excel in bioinformatics. Barry R Zeeberg, et. al., BMC Bioinformatics 2004, 5:80 doi:10.1186/1471-2105-5-80中有详细的描述。

也许我们都经历过类似的问题,当我们使用软件比如R将一个gene list保存在一个csv文件之后交给别人编辑,再传回来,应该显示为SEPT2的基因被显示为一个数字。当我们使用Excel打开之后,会发现它变成了2-SEP这样的时间。原来,使用Excel将文件编辑过之后,会自动地将类似SEPT3这种基因名识别成日期,再保存的时候,就改变了它的值。

这是一个令人苦恼的问题。甚至NCBI的数据中也曾经出现这样的问题。

下面我们可以试验一下这种现象。

> x <- matrix(c("JAN1", "FEB2", "MAR3", "APR4", "MAY5", "JUN6", "JUL7", "AUG8", 
+     "SEP9", "OCT1", "NOV1", "DEC2"), nrow = 4)
> x
##      [,1]   [,2]   [,3]  
## [1,] "JAN1" "MAY5" "SEP9"
## [2,] "FEB2" "JUN6" "OCT1"
## [3,] "MAR3" "JUL7" "NOV1"
## [4,] "APR4" "AUG8" "DEC2"
> write.csv(x, "testXLS.csv", row.names = FALSE)

在EXCEL中打开testXLS.csv文件,我们会看到它们都被识别为日期了。

被Excel错误识别的数据

所以,如果使用R来输出文件给非专业人员交流使用时,为了预防这一错误的发生,需要将数据直接写为Excel文件,而不是可自动被Excel链接打开的文本文件,比如csv文件等。

> library(WriteXLS)
> x <- data.frame(x)
> WriteXLS("x", "testXLS.xls")

下图为在EXCLE中打开testXLS.xls文件的效果,

被Excel正确识别的数据

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

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

发表评论

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