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