实验六十五 R语言基础:文件操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Will_cruise/article/details/89485381

实验指导:

65.1 实验目的

学习R语言读写txt和csv文件的方法。

65.2 实验要求

掌握R语言读写txt和csv文件的方法。

65.3 实验原理

R语言支持读写多种数据格式的文件,包括txt,csv,excel,xml,json等。但是读写excel等文件需要安装第三方的库,而最常操作的文件其实是txt和csv格式的文件,并且对于这两种文件的读写不需要安装其它的库,因为这已经集成到R的基础环境里了。在本次实验中,我们将学习读写txt和csv文件的方法。

实际上,无论是txt还是csv文件都是属于普通的文本文件,对于文本文件,我们可以使用read.table和read.csv函数进行读取,其区别是read.table函数常用来读取以空白字符为分隔符的文本,而read.csv常用来读取以逗号为分隔符的文本。但是两个函数都可以通过设置参数sep来指定分隔符。使用help函数可以查看详细的参数列表。保存数据到外部可以通过write.table和write.csv两个函数。下面我们将介绍这四个函数主要的参数和用法。

65.3.1 read.table函数

read.table用来读取以表格格式存储的文本文件。其用法如下:

read.table(file)

常用参数解释:

file: string类型,表示要读取的文件名,可以是绝对路径或者相对路径,但需要注意的是在R语言中‘\’是转义符,所以路径分隔符必须写成’\\’或‘/’。如果使用相对路径,可以使用getwd()函数查看当前工作目录,也可以通过setwd(dir)函数设置工作目录。

header: boolean类型,默认False,表示是否把文件第一行作为标题(表头)。

sep: 指定分隔符,默认是空格。

quote: 指定引用符号,默认为引号。

dec: 小数点的表示,默认为’.’。

na.strings: 缺失值(NA值)的表示,默认为”NA”。

skip: int类型,指定要忽略的某一行。

strip.white: boolean类型,默认为FALSE,是否忽略头尾的空白字符。

blank.lines.skip: boolean类型,默认为TRUE,是否忽略空白行。

comment.char: 指定注释字符,默认为”#”。

此函数将会返回一个数据帧对象。

65.3.2 read.csv函数

read.csv的用法与read.table几乎一样,对于read.table的支持的参数,read.csv也支持,区别是read.csv默认分隔符为逗号,而且默认有表头,即header=TRUE。

65.3.3 write.table函数

保存数据到外部文件可以使用write.talbe函数,用法如下:

write.table(x, file="")

常用参数解释:

x: 要保存的对象,通常为一个矩阵或数据帧对象,否则会尝试进行强制转换为数据帧对象再进行保存。

file: 要保存的文件名或打开的一个连接,默认的""表示输出到屏幕。

append: boolean类型,默认False,表示是否为追加模式,只有保存的文件名已存在时有效。

sep: 指定分隔符,默认是空格。

quote: boolean类型,默认为TRUE,表示是否使用引号包围内容。

dec: 小数点的表示,默认为’.’。

na: 缺失值(NA值)的表示,默认为”NA”。

eol: 行结束符,默认为’\n’。

65.3.4 write.csv函数

保存对象为csv格式时使用此方法。

65.4 实验步骤

65.4.1 编写读取txt文件测试程序

启动实验后,登录master服务器,先在目录"/root"下创建一个本地文件1.txt,使用vi编辑器打开并输入以下内容:

1   6   a
2   7   b
3   8   c
4   9   d
5   10  e

键入完成后,保存退出。

然后使用vi编辑器编写R语言读取txt文件测试程序readtxt.R,在vi编辑器中键入如下代码:

#!/usr/bin/env Rscript
df = read.table(file="/root/1.txt")
print(df)

键入完成后,保存退出。

这里我们使用read.table方法来读取一个文本文件,如果读取成功,该方法将返回一个data.frame对象。

65.4.2 运行读取txt文件测试程序

在master服务器上执行如下命令,运行R语言读取txt文件测试程序。

Rscript readtxt.R

65.4.3 编写写入txt文件测试程序

编写写入txt文件测试程序writetxt.R,在vi编辑器中键入如下代码:

#!/usr/bin/env Rscript
# 先读取数据
df = read.table(file="/root/1.txt")
# 修改数据
df[1]=999
# 保存数据到2.txt
write.table(df,file="/root/2.txt",quote=FALSE)

键入完成后,保存退出。

这里先读取1.txt文件到df,然后把df的第一列数据全部更改为999,然后保存到"/root/2.txt"中。保存可以使用write.table方法,该方法有一个默认参数quote=TRUE,意为保存的时候每个数据将会带上双引号,通过设置该参数为FALSE可以去掉双引号。

65.4.4 运行写入txt文件测试程序并查看所保存的文件内容

在master服务器上执行如下命令,运行R语言写入txt文件测试程序并查看所保存的文件内容。

Rscript writetxt.R && cat 2.txt

65.4.5 编写读取csv文件测试程序

其实csv文件与txt文件一样,都是文本文件,只是csv文件里面的内容是以逗号分隔的,为了方便读取这种格式的文本,R语言提供了read.csv方法。

同样地,我们在目录"/root/"下新建一个1.csv文件,使用vi编辑器打开并输入以下内容:

Col1,Col2,Col3
1,2,3
4,5,6
7,8,9
a,b,c

键入完成后,保存退出。

然后使用vi编辑器编写读取csv文件测试程序readcsv.R,在vi编辑器中键入如下代码:

#!/usr/bin/env Rscript
df2=read.csv("/root/1.csv")
print(df2)

键入完成后,保存退出。

65.4.6 运行读取csv文件测试程序

在master服务器上执行如下命令,运行R语言读取csv文件测试程序。

Rscript readcsv.R

65.4.7 编写写入csv文件测试程序

使用vi编辑器编写写入csv文件测试程序writecsv.R,在vi编辑器中键入如下代码:

#!/usr/bin/env Rscript
df2=read.csv("/root/1.csv")
df2['Col1']=100
write.csv(df2,file="/root/2.csv",quote=FALSE,row.names=FALSE)

键入完成后,保存退出。

对于data.frame对象,我们可以通过指定列名来索引数据,这里我们将名为"Col"的列数据全更改为100。最后,保存更改后的结果到 2.csv文件,参数row.names设置为FALSE是为了在保存数据的时候不保存行名。

65.4.8 运行写入csv文件测试程序并查看所保存的文件内容

在master服务器上执行如下命令,运行R语言写入csv文件测试程序并查看所保存的文件内容。

Rscript writecsv.R && cat 2.csv

65.5 实验结果

65.5.1 读取txt文件测试程序运行结果

读取txt文件测试程序运行结果输出如下所示:

图65-1 readtxt.R运行结果

65.5.2 写入txt文件测试程序运行结果

写入txt文件测试程序并查看所保存的文件内容结果输出如下所示:

图65-2 writetxt.R运行结果

65.5.3 读取csv文件测试程序运行结果

读取csv文件测试程序运行结果输出如下所示:

图65-3 readcsv.R运行结果

65.5.4 写入csv文件测试程序运行结果

写入csv文件测试程序运行结果如下所示:

图65-4 writecsv.R运行结果

实验操作:

步骤1:使用R语言读取txt文件

步骤2:使用R语言写入txt文件

#!/usr/bin/env Rscript
# 先读取数据
df = read.table(file="/root/1.txt")
# 修改数据
df[1]=999
# 保存数据到2.txt
write.table(df,file="/root/2.txt",quote=FALSE)

步骤3:使用R语言读取csv文件

步骤4:使用R语言写入csv文件

猜你喜欢

转载自blog.csdn.net/Will_cruise/article/details/89485381