R语言读写文件

R语言读写最灵活的文件——txt文件

R语言可以读取很多文件,其中以txt文本文件最为灵活,为什么呢,txt文件可以以任意符号作为分隔符,比如“,”,“\t”,空格,甚至“……&¥¥%¥”等任意自定义的分隔符号。

读取文件
这里先把工作空间切换到D盘下面,默认的一般是C盘的文档,我们要有分层管理文件的概念,否则我们还是一个合格的程序员吗?

setwd('D:\\')

读取文本文件主要用read.table(filePath,header = ,sep=)
filePath就是文件路径,header表示文件是否有头部,我这个文件没有头部,值就为false,sep表示文件是以什么符号作为分隔符号。

头部是什么意思呢?

有头部
有头部

没有头部
4906809-27f36c55d477b899

现在这里有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文件,就是这么多,我是强烈不赞成直接读取的,强迫症,耗人力、耗时间、耗内存资源!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注