
第四章数据输入输出
第四章 数据输入输出

本章学习目标1.了解R语言文件夹与文件的基本操作。2.掌握文本格式和RData格式的输入输出。3.掌握xlsx格式的输入输出。4.了解SPSS数据文件和网页数据的读取
本章学习目标 1. 了解R语言文件夹与文件的基本操作。 2. 掌握文本格式和RData格式的输入输出。 3. 掌握xlsx格式的输入输出。 4. 了解SPSS数据文件和网页数据的读取

4.1基本输入输出功能在R语言中,基本的输入输出功能主要包括三种形式:键盘录入和屏幕输出、文本格式的输入输出、自有二进制格式的输入输出。在R语言中,我们无需关注键盘录入的实现过程,而且键盘录入数据的相关函数在实际操作中应用较少,因此本节不对其进行讲解。此外,由于输入输出涉及到系统中文件夹和文件的查找和选择,因此本节将对R语言中文件夹和文件的操作进行一些简单介绍
4.1 基本输入输出功能 在R语言中,基本的输入输出功能主要包括三种形式:键盘录入和屏幕输出、文本格式的 输入输出、自有二进制格式的输入输出。在R语言中,我们无需关注键盘录入的实现过程, 而且键盘录入数据的相关函数在实际操作中应用较少,因此本节不对其进行讲解。此外, 由于输入输出涉及到系统中文件夹和文件的查找和选择,因此本节将对R语言中文件夹和 文件的操作进行一些简单介绍

4.1基本输入输出功能4.1.1--4.1.2setwd()#设置工作目录②getwd()#获取当前工作自录③dir.exists()#判断文件夹是否存在④dir.create()#创建新的文件夹?list.dirs()#显示工作目录下的所有文件夹,默认递归显示;参数recursive=F不递归显示?unlink()#直接删除文件夹,谨慎操作!?write(函数参数,file=.)#将数据输出到文件“”中?file.choose()#打开对话框,选择相应文件,返回文件所在的路径#显示工作目录下的文件和文件夹,参数recursive=T递归显示文件list.files()?file.remove()#删除文件,谨慎操作!福? file.rename()重命名文件?#指定输出的值print()cat()#指定输出的值,只对向量进行输出家③ sink()#将屏幕输出的内容保存下来
4.1 基本输入输出功能 ① setwd() # 设置工作目录 ② getwd() # 获取当前工作目录 ③ dir.exists() # 判断文件夹是否存在 ④ dir.create() # 创建新的文件夹 ⑥ list.dirs() # 显示工作目录下的所有文件夹,默认递归显示; 参数recursive = F 不递归显示 ⑦ unlink() # 直接删除文件夹,谨慎操作! ⑧ write(函数参数, file = ‘.’) # 将数据输出到文件“.”中 ⑨ file.choose() #打开对话框,选择相应文件,返回文件所在的路径 ⑩ list.files( ) # 显示工作目录下的文件和文件夹,参数recursive = T 递归显示文件 ⑪ file.remove() # 删除文件,谨慎操作! ⑫ file.rename() # 重命名文件 ⑬ print() # 指定输出的值 ⑭ cat() # 指定输出的值,只对向量进行输出 ⑮ sink() # 将屏幕输出的内容保存下来 4.1.1 - 4.1.2

4.1基本输入输出功能4.1.1文件夹与文件1.工作目录工作目录即数据分析时输入输出的一个默认文件夹。事先设置一个合适的工作目录至少有三个好处。其一,避免保存和读取文件时反复输入相同的路径。其二,当迁移工作目录时可以不用大量修改程序中所涉及到的路径。其三,当多个工作同时进行时,可以方便进行整理,以避免相互干扰。#无法设置,可能是文件夹不存在>setwd('d:/R语言练习"Errorinsetwd("d:/R语言练习"):cannotchangeworkingdirectory#判断文件夹是否存在>dir.exists('d:/R语言练习")[1] FALSE>dir.create(d:/R语言练习)#不存在的话,可以新建一个#设置工作目录>setwd('d:/R语言练习")>getwd()#获取当前工作目录[1]"d:/R语言练习
4.1 基本输入输出功能 1. 工作目录 工作目录即数据分析时输入输出的一个默认文件夹。事先设置一个合适的工作目录至少有 三个好处。其一,避免保存和读取文件时反复输入相同的路径。其二,当迁移工作目录时, 可以不用大量修改程序中所涉及到的路径。其三,当多个工作同时进行时,可以方便进行 整理,以避免相互干扰。 > setwd('d:/R语言练习') #无法设置,可能是文件夹不存在 Error in setwd("d:/R语言练习") : cannot change working directory > dir.exists('d:/R语言练习') #判断文件夹是否存在 [1] FALSE > dir.create('d:/R语言练习') #不存在的话,可以新建一个 > setwd('d:/R语言练习') #设置工作目录 > getwd() #获取当前工作目录 [1] "d:/R语言练习" 4.1.1 文件夹与文件

4.1基本输入输出功能需要注意的是,linux系统中的路径分隔符是斜杠"",windows系统中的路径分隔符为反斜杠"",而R语言中由于""具有转义的作用,因此其路径分隔符和linux系统一致。如上所示,当在路径中采用“J"时,R语言会自动将其转换为系统能识别的符号。此外,windows系统下也可以采用“的方式分隔路径。在实际操作过程中,为避免反复输入路径,可以设一个变量path用于保存路径,同时可以将文件夹的判断与建立用if语句连起来,>path='d:/R语言练习2#注意取反>if(!dir.exists(path))dir.create(path)>setwd(path)>getwd()[1]"d:/R语言练习2
4.1 基本输入输出功能 需要注意的是,linux系统中的路径分隔符是斜杠“/”,windows系统中的路径分隔符为反斜 杠“\”,而R语言中由于“\”具有转义的作用,因此其路径分隔符和linux系统一致。如上所示, 当在路径中采用“/”时,R语言会自动将其转换为系统能识别的符号。此外,windows系统 下也可以采用“\\”的方式分隔路径。 在实际操作过程中,为避免反复输入路径,可以设一个变量path用于保存路径,同时可以 将文件夹的判断与建立用if语句连起来。 > path='d:/R语言练习2' > if (! dir.exists(path)) dir.create(path) #注意取反 > setwd(path) > getwd() [1] "d:/R语言练习2

4.1基本输入输出功能在构建工作目录之后,有时还要根据需要建立不同的文件夹以分类存放文件。此时可以利用函数dir.create创建所需的文件夹。当需要查看工作目录下有哪些文件夹时,可使用函数list.dirs0显示所包含的文件夹。当需要删除某个文件夹时,可使用函数unlink对其删除。>dir.create(数据#创建一个名为“数据”的文件夹>dir.create(程序")#创建一个名为“程序”的文件夹>dir.create(程序/test1")#在文件夹“程序”下再创建一个名为"test1"的文件夹#显示工作目录下的所有文件夹,默认递归显示> list.dirs()[1] ".""./程序""./程序/test1""./数据#不进行递归显示>list.dirs(recursive=F)[1]"./程序""./数据#显示指定路径下的文件夹>list.dirs(程序")[1]"程序”"程序/test1">list.dirs("程序recursive=F)井显示指定路径下的文件夹,不进行递归显示[1]"程序/test1">unlink(程序recursive=T)#删除名为“程序”的文件夹> list.dirs()[1]"""./数据
4.1 基本输入输出功能 在构建工作目录之后,有时还要根据需要建立不同的文件夹以分类存放文件。此时可以利 用函数dir.create()创建所需的文件夹。当需要查看工作目录下有哪些文件夹时,可使用函 数list.dirs()显示所包含的文件夹。当需要删除某个文件夹时,可使用函数unlink()对其删除。 > dir.create('数据') #创建一个名为“数据”的文件夹 > dir.create('程序') #创建一个名为“程序”的文件夹 > dir.create('程序/test1') #在文件夹“程序”下再创建一个名为“test1”的文件夹 > list.dirs() #显示工作目录下的所有文件夹,默认递归显示 [1] "." "./程序" "./程序/test1" "./数据" > list.dirs(recursive=F) #不进行递归显示 [1] "./程序" "./数据" > list.dirs('程序') #显示指定路径下的文件夹 [1] "程序" "程序/test1" > list.dirs('程序',recursive=F) #显示指定路径下的文件夹,不进行递归显示 [1] "程序/test1" > unlink('程序',recursive=T) #删除名为“程序”的文件夹 > list.dirs() [1] "." "./数据

4.1基本输入输出功能2.文件操作在对输入输出的文件进行操作时,首先需要确定文件所在路径。当文件的路径较长时,手工录入容易出错,则可以使用函数file.chooseO)打开文件选择对话框,直接鼠标操作选择文件即可返回相应的路径。>setwd('d:/R语言练习")#设置工作目录>dir.create(数据")#创建一个文件夹#输出一些数据到文件"test.txt">write(1:3,file=数据/test.txt")>file.choose()打开对话框,选择相应的文件,即可返回文件所在路径[1]"D:R语言练习数据test.txt"此外,还可以在系统中选择相应文件或文件夹之后,直接右键复制,再粘贴在R语言的命令行中,此时即可实现文件或文件夹路径的复制
2. 文件操作 在对输入输出的文件进行操作时,首先需要确定文件所在路径。当文件的路径较长时,手 工录入容易出错,则可以使用函数file.choose()打开文件选择对话框,直接鼠标操作选择文 件即可返回相应的路径。 4.1 基本输入输出功能 > setwd('d:/R语言练习') #设置工作目录 > dir.create('数据') #创建一个文件夹 > write(1:3,file='数据/test.txt') #输出一些数据到文件“test.txt” > file.choose() #打开对话框,选择相应的文件,即可返回文件所在路径 [1] "D:\\R语言练习\\数据\\test.txt" 此外,还可以在系统中选择相应文件或文件夹之后,直接右键复制,再粘贴在R语言的命 令行中,此时即可实现文件或文件夹路径的复制

4.1基本输入输出功能在获取文件夹路径之后,即可利用相应的函数查看文件夹内的文件,或判断某个文件是否存在。根据需要也可删除或重命名文件。#文件夹和文件操作示例#设置工作目录,并创建几个文显示工作目录下的文件> list.files()件夹和文件"数据"[1]"readme.txt""程序">setwd(d:/R语言练习")#递归显示工作目录下的所有文件>list.files(recursive=T)>dir.create(程序")[1]"readme.txt""数据/test1.txt""数据/test2.txt">dir.create(数据')>file.remove(数据/test1.txt")#使用函数file.remove()删除文件>write(1:3,file='数据/test1.txt")[1] TRUE>write(1:3.file='数据/test2.txtl>unlink(数据/test2.txt")#使用函数unlink()删除文件>write(1:3,file='readme.txt")>list.files(recursive=T)[1]"readme.txt">file.rename(from='readme.txt',to='说明文件.txt')#文件重命名[1] TRUE> list.files(recursive=T)[1]"说明文件.txt'#判断文件是否存在>file.exists说明文件.txt")[1] TRUE
在获取文件夹路径之后,即可利用相应的函数查看文件夹内的文件,或判断某个文件是否 存在。根据需要也可删除或重命名文件。 4.1 基本输入输出功能 #设置工作目录,并创建几个文 件夹和文件 > setwd('d:/R语言练习') > dir.create('程序') > dir.create('数据') > write(1:3,file='数据/test1.txt') > write(1:3,file='数据/test2.txt') > write(1:3,file='readme.txt') #文件夹和文件操作示例 > list.files() #显示工作目录下的文件 [1] "readme.txt" "程序" "数据" > list.files(recursive=T) #递归显示工作目录下的所有文件 [1] "readme.txt" "数据/test1.txt" "数据/test2.txt" > file.remove('数据/test1.txt') #使用函数file.remove()删除文件 [1] TRUE > unlink('数据/test2.txt') #使用函数unlink()删除文件 > list.files(recursive=T) [1] "readme.txt" > file.rename(from='readme.txt',to='说明文件.txt') #文件重命名 [1] TRUE > list.files(recursive=T) [1] "说明文件.txt" > file.exists('说明文件.txt') #判断文件是否存在 [1] TRUE

4.1基本输入输出功能4.1.2屏幕输出1.函数print()和cat()在数据分析的过程中,当需要显示某个变量的值时,可以在命令提示符后直接键入变量的名称即可,但在循环结构中,必须使用函数对其进行屏幕输出。>for (i in 1:2)i#在循环结构中,仅使用变量名无法输出变量的内容> for (i in 1:2) print(i)#可以使用函数print()指定输出i的值[1] 1[1]2> for (i in 1:2) cat(i)#也可以使用函数cat()指定输出的值12>for (i in 1:5) cat(i)12345函数print0和cat(都可显示i的值,但二者输出格式不一样。函数print()是一个类函数,一次对一个变量进行输出。它会根据变量的类别,调用合适的函数以相应的格式进行输出。函数cat(功能较为简单,只能对向量进行输出。在输出时,将向量中的元素转换为字符串,并逐个字符输出
4.1 基本输入输出功能 1. 函数print()和cat() 在数据分析的过程中,当需要显示某个变量的值时,可以在命令提示符后直接键入变量的 名称即可,但在循环结构中,必须使用函数对其进行屏幕输出。 > for (i in 1:2) i # 在循环结构中,仅使用变量名无法输出变量的内容 > for (i in 1:2) print(i) # 可以使用函数print()指定输出i的值 [1] 1 [1] 2 > for (i in 1:2) cat(i) # 也可以使用函数cat()指定输出i的值 12 > for (i in 1:5) cat(i) 12345 4.1.2 屏幕输出 函数print()和cat()都可显示i的值,但二者输出格式不一样。函数print()是一个类函数,一次对一个 变量进行输出。它会根据变量的类别,调用合适的函数以相应的格式进行输出。函数cat()功能较 为简单,只能对向量进行输出。在输出时,将向量中的元素转换为字符串,并逐个字符输出