對(duì)于24K純生信小白來(lái)說(shuō),數(shù)據(jù)準(zhǔn)備絕對(duì)是一件令人頭疼的問(wèn)題。 還記得我第一次用ClustalX做序列Alinment時(shí)一直不出結(jié)果,折騰了一下午偶然發(fā)現(xiàn)出錯(cuò)僅僅因?yàn)槲募侵形牡?。?jīng)過(guò)這次教訓(xùn)以后,自己也養(yǎng)成了個(gè)習(xí)慣,不管是文件名還是表格內(nèi)容絕不用中文,哪怕是用拼音表示。 在《你可能需要一個(gè)功能強(qiáng)大一點(diǎn)的文本編輯器……》一文,已介紹過(guò)用Notepad++查看Excel中不容易發(fā)現(xiàn)的格式錯(cuò)誤??蛇€是有小白不知道啥是“制表符”,啥是文件拓展名,有時(shí)錯(cuò)誤地將Excel表格另存成Unicode文本(*.txt)文件被虐得不要不要的。 像我這樣 比較懶 心疼小白的人,不禁想問(wèn)就不能省去Excel轉(zhuǎn)制表符分隔的txt文件這一步,直接導(dǎo)入Excel數(shù)據(jù)嗎? 其實(shí),R有很多包可以實(shí)現(xiàn)xlsx格式數(shù)據(jù)的導(dǎo)入和導(dǎo)出,下面給大家介紹3個(gè)R包。 xlsx包 xlsx 包比較強(qiáng)大,可以導(dǎo)入和導(dǎo)出Excel 文檔(xls 和 xlsx格式)。 它是一個(gè)基于java的R包。主要通過(guò) read.xlsx() 和read.xlsx2() 以R數(shù)據(jù)框的形式讀入 Excel sheet。二者的區(qū)別是read.xlsx2()讀取數(shù)據(jù)量的大(超過(guò)100 000個(gè)單元格)的表格更快。
read.xlsx(file, sheetIndex, header=TRUE, colClasses=NA) read.xlsx2(file, sheetIndex, header=TRUE,colClasses='character')
file :讀入文件路徑 sheetIndex : 讀入Excel文檔的表格(sheet)序號(hào) header : 第一行是否為變量名 colClasses : 列的數(shù)據(jù)類型
示例:
#加載xlsx包 library(xlsx)
#讀入工作目錄中的Excel格式數(shù)據(jù) st1 <- read.xlsx('mtcars.xlsx',="">-> #讀入指定目錄中的Excel格式數(shù)據(jù) st2 <- read.xlsx(file='C:\\Users\\MHY\\Desktop\\mtcars.xlsx' ,="">-> 相應(yīng)的,導(dǎo)出數(shù)據(jù)的函數(shù)也有兩個(gè),
write.xlsx(x, file, sheetName='Sheet1',col.names=TRUE, row.names=TRUE, append=FALSE) write.xlsx2(x, file, sheetName='Sheet1',col.names=TRUE, row.names=TRUE, append=FALSE)
x :需要導(dǎo)出的數(shù)據(jù)框 file :到出文件的路徑 sheetName : 導(dǎo)出后生成表格(sheet)的名稱 col.names, row.names : 是否導(dǎo)出數(shù)據(jù)框的行名和列名 append : 是否以追加新sheet方式將數(shù)據(jù)導(dǎo)出到已有Excel文檔中
示例: #導(dǎo)出R自帶mtcars數(shù)據(jù)為Excel數(shù)據(jù) write.xlsx(mtcars, file='C:\\Users\\MHY\\Desktop\\mtcars.xlsx', sheetName='mtcars') #在導(dǎo)出的表中追加新的sheet(R自帶數(shù)據(jù)cars); write.xlsx(cars, file='C:\\Users\\MHY\\Desktop\\mtcars.xlsx', sheetName='cars',append=TRUE) 此外,還可調(diào)整完全用R腳本去創(chuàng)建1個(gè)空的Excel文檔,設(shè)置單元格格式,以及在Excel表格中添加R繪制的圖表等,這里就不多做介紹。
readxl包 readxl 可以很簡(jiǎn)單的將Excel文檔讀入到R中,R包不需要依賴java環(huán)境, 非常容易安裝。如果只是讀入Excel數(shù)據(jù),也夠用了。主要有read_xls()、read_xlsx()和read_excel()3個(gè)函數(shù)讀入數(shù)據(jù),三者參數(shù)一致,只不過(guò)read_excel()會(huì)自動(dòng)判定數(shù)據(jù)是xls或xlsx那種類型。
read_excel(path,sheet = NULL, range = NULL, col_names = TRUE, skip = 0,…)
path : 讀入文件路徑 sheet : 讀入Excel文檔的表格(sheet)序號(hào)或名稱 range : 讀入數(shù)據(jù)區(qū)域,比如 'B3:D87','sheet2!B2:G14' col_names : 第1行是否作為列名讀入
示例:
library(readxl) re<-read_excel(path ='c:\\users\\mhy\\desktop\\mtcars.xlsx',sheet="">-read_excel(path> openxlsx包 類似readxl包,openxlsx包也可以很簡(jiǎn)單的將Excel文檔讀入到R中。
read.xlsx(xlsxFile, sheet = 1, startRow =1, colNames = TRUE, rowNames = FALSE, …)
xlsxFile : 讀入文件路徑 sheet : 讀入Excel文檔的表格(sheet)序號(hào)或名稱 startRow : 從那一行開(kāi)始讀入數(shù)據(jù) colNames : 如果為TRUE,第一行數(shù)據(jù)作為列名 rowNames : 如果為TRUE, 第一列數(shù)據(jù)作為行名
示例:
library(openxlsx) op<-read.xlsx(xlsxfile ='c:\\users\\mhy\\desktop\\mtcars.xlsx',sheet="">-read.xlsx(xlsxfile>
R包的安裝 xlsx包的安裝需要先安裝Java。如果之前安裝過(guò)Java,比如裝過(guò)Cytoscape,仍然建議重新安裝下Java,否則可能會(huì)因Java版本過(guò)期遇到下圖這樣的報(bào)錯(cuò)信息。
從官網(wǎng)下載Java的安裝包,直接安裝即可,安裝過(guò)程中會(huì)自動(dòng)檢測(cè)和卸載過(guò)期的版本。 地址:https://www./en/download/windows-64bit.jsp
成功安裝Java之后是這樣的,之后就可以通過(guò)install.packages('xlsx') 安裝xlsx包了。 readxl包和openxlsx包的安裝比較簡(jiǎn)單,直接使用install.packages()函數(shù)安裝即可。
最后,從功能上來(lái)將xlsx包的功能是最強(qiáng)大的,但它的安裝需要依賴Java環(huán)境。如何只是導(dǎo)入Excel數(shù)據(jù),用readxl和openxlsx包就可以了,畢竟用R基礎(chǔ)函數(shù)write.table()導(dǎo)出的文本文件也可以用Excel打開(kāi)。 |
|
來(lái)自: 生物_醫(yī)藥_科研 > 《待分類》