R語言-如何讀寫帶分隔符的文件

有眾多的格式和文本文件標準可用於存儲數據。用於存儲數據的通用格式為分隔符值(即CSV或制表符分割文件)、可擴展標記語言(XML)、JavaScript對象表示法(JSON)

將數據存儲在文本文件中的主要優點是:他們可被幾乎所有的其他數據分析軟件或人讀取

R語言提供豐富的函數來讀取不同格式的數據,包括:

文本文件(TXT文件)

逗號分隔文件(CSV文件)

TXT文件——read.table()

矩形(類似電子表格的)數據通常存儲在帶有分隔符的文件中,特別是逗號分隔值(CSV)和制表符分隔值文件。read.table將讀取這些分隔符文件,並將結果存儲在一個數據框中。其格式如下:

read.table(file,header = FALSE,sep = “”,quote = “”'",
dec = “.”,numerals = c(“allow.loss”,“warn.loss”,“no.loss”),
row.name,col.name,as.is = !stringsAsFactors,
na.strings = “NA”,colClasses = NA,nrow = -1,
skip = 0,check.names = TRUE,fill = !blank.lines.skip,
strip.white = FALSE,bla nk.lines.skip = TRUE,
comment.char = “#”,
allowEscapes = FALSE,flush = FALSE,
stringsAsFactors = default.stringsAsFactors(),
fileEncoding = “”,encoding = “unknown”,text,skipNul = FALSE)

read.table 函數的常用參數描述

參數 描述
file 文件名(包含在“”內,或使用一個字符型變量),可能需要全路徑(即使是在Windows下,符號 \ 也不允許包含在內,必須用 / 或者 \ \ 替換)或者一個URL(Uniform Resource Location,統一資源定位符)鏈接(用URL對文件遠程訪問)
header 一個邏輯值,用來反映這個文件的第1行是否包含變量名,為TRUE時表示文件的第1行為變量名
sep 文件中的字段分隔符,例如,對用制表符分隔的文件使用sep=“\t”
quote 指定用於包圍字符型數據的字符
dec 用來標識小數點的字符
fill 如果為TRUE且所有行中的變量數目並不相同,則用空白填補
row.names 保存著行名的向量,或文件中一個變量的序號或名字,默認時行號取為1、2、3···
col.names 指定列名的字符型向量,默認值為V1、V2、V3···
encoding 若文件中包含非ASCII字符字段,則使用此參數進行設置,可確保以正確的編碼方式讀取,避免出現亂碼

更多高級選項包括:覆蓋默認的行名、列名和類,指定輸入文件的字符編碼,以及輸入的字符串格式的列如何聲明

CSV文件——read.csv()

read.csv函數可讀入一個逗號分隔文件並將其保存為一個數據框,其格式如下:

read.csv(file,header = TRUE,sep = “,”,quote = “” “,dec=” . ",fill = TRUE,comment.char = " ",ecoding = "unknown ",…)
參數 描述
file 文件名(包含在“”內,或使用一個字符型變量),可能需要全路徑(即使是在Windows下,符號 \ 也不允許包含在內,必須用 / 或者 \ \ 替換)或者一個URL鏈接(用URL對文件遠程訪問)
header 一個邏輯值,用來反映這個文件的第1行是否包含變量名,為TRUE時表示文件的第1行為變量名
sep 文件中的字段分隔符,CSV文件默認為sep=”,”
quote 指定用於包圍字符型數據的字符
dec 用來標識小數點的字符
fill 如果為TRUE且所有行中的變量數目並不相同,則用空白填補
comment.char 包含單個字符或空字符串的長度為1的字符向量,以這個字符開頭的行將被忽略(要禁用這個參數,可使用comment.char=””
encoding 若文件中包含非ASCII字符字段,則使用此參數進行設置,可確保以正確的編碼方式讀取,避免出現亂碼

與此相反的任務是寫入文件,write.table和write.csv分別對應著read.table和read.csv的讀操作

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。