R语言-如何读写带分隔符的文件

时间:2021-05-20

有众多的格式和文本文件标准可用于存储数据。用于存储数据的通用格式为分隔符值(即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的读操作

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章