R语言读写最灵活的文件——txt文件
R语言可以读取很多文件,其中以txt文本文件最为灵活,为什么呢,txt文件可以以任意符号作为分隔符,比如“,”,“\t”,空格,甚至“……&¥¥%¥”等任意自定义的分隔符号。
读取文件
这里先把工作空间切换到D盘下面,默认的一般是C盘的文档,我们要有分层管理文件的概念,否则我们还是一个合格的程序员吗?
setwd('D:\\')
读取文本文件主要用read.table(filePath,header = ,sep=)
filePath就是文件路径,header表示文件是否有头部,我这个文件没有头部,值就为false,sep表示文件是以什么符号作为分隔符号。
头部是什么意思呢?
有头部
没有头部
现在这里有4个文件,分别以空格,逗号,制表符,“/”作为分隔符,下面分别将其读取:
> dat <- read.table('1.txt',header = FALSE,sep = ' ')
> dat2 <- read.table('2.txt',header = FALSE,sep = ',')
> dat3 <- read.table('3.txt',header = FALSE,sep = '\t')
> dat4 <- read.table('4.txt',header = FALSE,sep = '/')
读取出来的数据都是一样的:
> dat
V1 V2 V3
1 110 210 310
2 120 300 400
> dat2
V1 V2 V3
1 110 210 310
2 120 300 400
> dat3
V1 V2 V3
1 110 210 310
2 120 300 400
> dat4
V1 V2 V3
1 110 210 310
2 120 300 400
因为第二个文件是以逗号作为分隔符,所以也是可以用read.csv()读取的,read.csv()也是一个读取文件函数,后面会讲到。
写入文件
把刚才读取的数据写入到一个新的文本文件里面,可以用write.table(),形式为:
write.table(dat,file = ,sep = ,row.names,col.names)
分别表示
- dat 被写的数据,
- file 文件名(包含路径),
- sep 分隔符,
- rownames 是否有行名(比如第一行,第二行。。)就是行名,
- col.names 是否有列名,同上;
当然了,一般行名与列名需要取有实际意义的名字,比如列名可以取(年龄、性别、成绩,这种表格相信大家应该都见过吧!)。
这里分别用" ","aaa","\t"作为分隔符,生成了3个文件。
> write.table(dat,file = '5.txt',sep = ' ')
> write.table(dat,file = '6.txt',sep = 'aaa')
> write.table(dat,file = '7.txt',sep = '\t')
当然了,你可以保存成任意你喜欢、需要的分隔符号。
R语言读取csv文件
csv文件一般是用的最多的数据文件格式,这一节主要介绍怎么读取csv文件。
这里在D盘根目录下面有一个csv文件,可以下面对其进行一些操作。
读取文件
> dat <- read.csv('D:\\1.csv',header = TRUE)
> dat
id name age score
1 0 ky 22 70
2 1 kg 23 80
3 2 kq 24 90
对于一般逗号作为分隔符的文本文件,也是可以用read.csv()读取的。
> dat2 <- read.csv('D:\\2.txt',header = FALSE) > dat2 V1 V2 V3 1 110 210 310 2 120 300 400
这里强调一下,因为headers参数有默认参数值,有的函数headers默认值是true,有的是false,这个记不住,也不好记,我们根据文件有头部就是true,没有就false,这样就不会出错了。
写文件
写文件用write.csv(dat,file,row.names,...)
比如这里,我们把数据dat写入一个csv文件里面去:
> write.csv(dat,'D:\\csv.csv',row.names = FALSE)
打开这个新生成的文件长这样:
显然,这是符合我们的要求的。
R语言读取xlsx文件
关于R语言读取Excel文件,比较麻烦,我从来都反对直接读取xlsx文件,因为爬虫数据时,一般保存的格式都是csv文件,或者直接保存到数据库里面,没有谁会保存到Excel文件里面。不管是txt文本文件,还是csv逗号分割符文件,都是可用R自带函数读取的,即使对于一般不太大的文件,我们可以将其打开另存为csv文件,当然了,Excel对于超过100万条的数据,也不一定是100万条,这与每一行数据量多少还是有关的,我是没有见过几百万条的Excel文件的,xlsx表格文件一般是拿来做商务报表的,应该没有几百万行的数据吧!
废话不多说,这里还是介绍一下怎么读写xlsx文件吧,毕竟很多人都有强迫症,非要直接读取xlsx文件,尤其是学习数学的,意志力很坚强!
- R语言想要处理xlsx文件,需要第三方包xlsx包,而xlsx包又依赖rJava包,因为写xlsx包的这个大牛不想重复造轮子,直接调用了rJava包中的函数,而rJava包需要java环境,所以总结起来需要完成以下三步:
安装jdk提供java语言的开发和运行环境,其实只需要运行环境jre就行了; - 安装rJava包;
- 安装xlsx包
安装jdk
1、去java官网下载jdk安装包,网址:www.java.com或者www.oracle.com都是可以的,java与jdk的关系可以理解为C语言与VC++的关系,我就这样解释。有了安装包,就可以安装了,根据安装向导安装即可
2、配置java环境变量
为什么需要配置环境变量,需要让系统运行R语言需要java时能够找到java环境。
我的jdk版本是jdk1.8.0_144
比如我的jdk安装路径是:D:\Program Files\Java\jdk1.8.0_144\bin
右键我的电脑==>属性==>高级系统设置==>环境变量
新建系统变量(用户变量也行)JAVA_HOME=D:\Program Files\Java\jdk1.8.0_144
在path变量开头加入%JAVA_HOME%\bin;,记得打分号,养成习惯,这样bin目录下面的二进制java.exe可执行文件就被系统知道,win+R组合键输入cmd,进入命令行,然后输入java -version显示jdk版本,表明java环境配置成功!
安装rjava包
安装xlsx包
总结:只要java环境配置成功,安装rJava、xlsx这两个包是肯定成功的,屡试不爽,不同系统,我都整过好几次,没有出过意外的。就是这么简单。
安装好了之后,我们就可以开心的操作xlsx文件了。
导入包
这个xlsxjars包是会随着xlsx包的自动下载导入同时进行的,不用担心。
我D盘根目录下面有一个xlsx文件,把它读取一下:
第一个参数表示文件名,第二个表示要读取的SheetIndex,因为有的xlsx表可能有多个sheet表,就像这样:
据需要制定要读取第几张表,因为第二个参数就是指定表的参数,所以不需要这样写:
> dat <- read.xlsx('test.xlsx',sheetIndex = 1)
这样写的话,参数位置不需要一一对应,因为你指定了参数名称,如果省略了,就需要与默认参数位置一一对应。
写入数据:
> write.xlsx(dat,'test2.xlsx')
就在工作空间D:\下面产生了一个test2.xlsx文件,内容就是dat的数据内容。
还是打开看一下:
关于R语言读取xlsx文件,就是这么多,我是强烈不赞成直接读取的,强迫症,耗人力、耗时间、耗内存资源!
文章评论