R 學習筆記: 數據輸入輸出

一般文件

手動輸入數據

如果數據量不大, 可以手動輸入數據, 除了通過變數賦值的方法來輸入數據外, 還可以通過編輯器或調用的窗口來輸入數據.

mydata <- data.frame(age = numeric(0), gender = character(0))nmydata <- edit(mydata) # 使用edit必須要重新賦給變數nnfix(mydata) # 使用fix直接修改變數n

scan 函數如果不加 file 的參數, 則直接從終端讀取數據, 需要使用 what 來指明數據類型: what=""讀字元, what=0 讀數字, what=list(a=0, b="") 把讀的結果按相應類型保存成 list. scan 函數也可以放在其他的函數中, 如 matrix, 然後在終端輸入值.

scan()nnmymat <- matrix(scan(),ncol=3,byrow=TRUE)n

讀取文本文件

mydata <- read.table(file = THEFILE, header = TRUE, sep = ",", stringsAsFactors = FALSE)n

除了 read.table 直接把 scan 函數封裝好的函數外, 還有 read.csv, read.csv2, read.delim, read.delim2 等對 read.table 進行了按照文件類型進行特別設置的函數可以使用.

  • read.csv: 以 "," 分隔的 CSV 文件, 默認第一行為表頭, 以 "." 作為小數點.

  • read.csv2: 以 ";" 分隔的 CSV 文件, 默認第一行為表頭, 以 "," 作為小數點.

  • read.delim: 以 "t" 分隔的 TSV 文件, 默認第一行為表頭, 以 "." 作為小數點.

  • read.delim2: 以 "t" 分隔的 TSV 文件, 默認第一行為表頭, 以 "," 作為小數點.

  • read.fwf: 按照固定長度去讀取文件.

讀取 Excel 文件

對於 Excel 文件, 可以像連接資料庫一樣進行連接, 使用 RODBC 包 (限於 Windows).

library(RODBC)nchannel <- odbcConnectExcel("myfile.xls")nmydata <- sqlFetch(channel, "mysheet1")nodbcClose(channel)n

Excel 2007 採用的 xlsx 文件實際上相當於 xls 的壓縮文件. 對於 xlsx 文件, 可以使用 xlsx 包, 來讀取和操作 xlsx 文件.

library(xlsx)nmydata <- read.xlsx("myfile.xlsx", 1) # 1 指的是要讀取的表單.n

也可以在所有的平台上使用 gdata 包的 read.xls 來讀取 Excel 文件.

關係資料庫

ODBC 資料庫介面

在系統安裝有合適的 ODBC 驅動的情況下, 使用 RODBC 包可以連接關係資料庫.

odbcConnect(dsn,uid="",pwd="") # 建立一個到ODBC資料庫的連接nsqlFetch(channel,sqltable) # 讀取ODBC資料庫中的某個表到一個數據框中nsqlQuery(channel,query) # 向ODBC資料庫提交一個查詢並返回結果nsqlSave(channel,mydf,tablename=sqtable,append=FALSE) # 將數據框寫入或更新(append=TRUE)到ODBC資料庫的n某個表中nsqlDrop(channel,sqtable) # 刪除ODBC資料庫中的某個表nclose(channel) # 關閉連接n

DBI 資料庫介面

DBI 提供資料庫通用介面. 相關 R 包有 RJDBC, RMySQL, RPostgreSQL, ROracle, RSQLite 等.

鏈接 Connection

有的時候不需要直接把所有的文件讀入內存, 這種情況下可以使用鏈接 (connection) 的方法讀取文件. 需要注意的是, 建立鏈接並不讀取文件, 當使用結束後還應該關閉鏈接.

connections

connections 的函數都是在 base 包中的, 包括 open, close 等. 鏈接可以用到之前需要使用文件名作為參數的地方, 如在 write.table 的參數中可以把一個鏈接賦值給 file 參數. 創建的鏈接默認不會打開, 需要使用包括 open 在內的其他函數打開鏈接.

創建鏈接

  • file: 創建文件鏈接.

  • url: 創建 url 鏈接.

  • gzfile: 創建 gz 壓縮文件鏈接.

  • bzfile: 創建 bz 壓縮文件鏈接.

  • xzfile: 創建 bz 壓縮文件鏈接.

  • unz: 創建只讀的 zip 壓縮文件鏈接.

  • pipe: 創建管道鏈接.

  • fifo: 按先進先出的隊列打開.

  • socketConnection: 創建需要賬號等信息的 socket 鏈接.

  • textConnection: 使用變數等對象建立鏈接.

創建鏈接的函數有 open 選項, 可以選擇鏈接類型, 其中 "t" 是創建 text 鏈接, "b" 是創建 binary 鏈接.

  • "r" 或者 "rt" 創建只讀的 text 鏈接.

  • "w" 或者 "wt" 創建重新寫的 text 鏈接.

  • "a" 或者 "at" 創建續寫的 text 鏈接.

  • "rb" 創建只讀的 binary 鏈接.

  • "wb" 創建重新寫的 binary 鏈接.

  • "ab" 創建續寫的 binary 鏈接.

  • "r+", "r+b" 創建讀寫的鏈接.

  • "w+", "w+b" 創建讀寫的鏈接, 在起始時先清除鏈接.

  • "a+", "a+b" 創建附加讀寫的鏈接.

  • seek: 用來改變鏈接指針的位置.

打開和關閉鏈接

當鏈接被打開並被操作之後, 鏈接的位置指針會從頭向後移動, 一定讀取等操作之後會移動到鏈接末尾.

  • open: 打開創建的鏈接.

  • close: 關閉打開的鏈接.

  • isOpen: 判斷鏈接是否打開.

  • isIncomplete: 判斷鏈接是否被阻斷.

一些函數可以直接打開鏈接, 有的以文本形式打開, 有的以二進位形式打開.

文本

  • readLines: 從鏈接中讀取一定的行數 (n, 如果 n 為負數則讀取整個文件).

  • writeLines: 把一定的內容以文本形式寫入一個鏈接.

  • cat: 把一些對象連接並輸出到文件或者鏈接.

  • sink: 把 R 的輸出導向文件 (名) 或鏈接.

  • scan: 從文件或鏈接讀取, what 參數可以指定讀取數據的保存類型.

  • parse: 接受文件名或者鏈接做為解析參數.

  • read.dcf, write.dcf: debian control file.

  • dput, dget: 以 ASCII 碼形式保存或讀取 R object.

  • dump: 把一系列以變數名標示的 R object 解析為文本保存到文件或鏈接, 會把相應的 R 代碼保存.

二進位

  • readBin

  • readChar

  • writeBin

  • writeChar

  • load

  • save

R 數據對象的存儲和讀取

有的時候需要把 R 中的對象存儲下來, 以便下次直接使用或者換計算機使用. R 可以存儲和讀取特定的文件直接到內存中, 相應的 R 對象都會被保存.

  • save.image: 把 R 中所有的對象 (ls 顯示的對象) 都保存在文件中, 默認為 .RData

  • save: 把特定的 R 對象保存在文件中.

  • load: 把文件中保存的 R 對象讀入內存.

另外歡迎大家關注我們的微信公眾號:NGS_Learning

高通量測序技術!

推薦閱讀:

人生苦短,我用Python
生物信息學課程
Mac 安裝Circos軟體

TAG:生物信息学 | R编程语言 |