大家可能对使用dos或者shell创建文件及文件夹或者查看和修改其属性并不陌生,其实R语言的基础函数中也囊括了文件夹和文件的基本操作函数,由于使用R的过程中会常常需要与文件打交道,因此一些基本的文件操作函数在实际使用中是十分常见的,这里做了一些简单的整理。

  • 构建文件路劲:
file.path(..., fsep = .Platform$file.sep)

file.path用于构建文件路劲,默认会使用.Platform$file.sep作为文件分隔符,因此可以实现跨平台操作,该函数实际较为常用。

#按向量中元素对应的位置生成文件路劲
file.path(c('C:', 'D:'), c('R_script', 'R_data'))
  • 列出路劲下的文件/目录 :
#列出当前目录下的文件和文件夹
list.files(path = ".", pattern = NULL, all.files = FALSE,
full.names = FALSE, recursive = FALSE, ignore.case = FALSE,include.dirs = FALSE, no.. = FALSE)
#列出当前目录下的文件和文件夹
dir(path = ".", pattern = NULL, all.files = FALSE,
full.names = FALSE, recursive = FALSE, ignore.case = FALSE,include.dirs = FALSE, no.. = FALSE)
#列出当前目录下的所有子目录,默认recursive = TRUE
list.dirs(path = ".", full.names = TRUE, recursive = TRUE)

- path – 字符串表示的路劲全名,默认为当前工作路劲;
- pattern – 查找的文件名,支持正则表达式;
- all.files – 逻辑值,FALSE(默认)仅仅返回可见的文件名,TRUE返回文件全名;
- full.names – 逻辑值,FALSE(默认)仅返回文件名,TRUE返回文件名包括路劲;
- recursive – 逻辑值,FALSE(默认)仅返回当前目录下文件,TRUE递归的扫描所有目录下的文件;
- ignore.case – 逻辑值,FALSE(默认)文件名大小写敏感,TRUE忽略大小写;
- include.dirs -逻辑值,FALSE(默认)不添加子目录名,TRUE加入子目录名称;
- no.. – 逻辑值,FALSE(默认)不排除‘.’和‘..’,TRUE为排除;

返回给定路劲下文件名或文件夹组成的字符向量,如果没有返回空字符。如果给定的路劲不存在,或为非法路劲或没有读取权限,返回空字符。list.dirs隐式的包含all.files = TRUE。

#列出当前工作目录下所有的文件和文件夹
list.files()
#列出当前工作目录下所有的文件,包含子目录文件
list.files(recursive = TRUE)#列出当前工作目录下所有.R结尾的文件
list.files(pattern = "*.R")
dir(pattern = "*.R")#列出当前工作目录下所有子目录,默认的recursive = TRUE
list.dirs()
  • 创建文件夹及设置权限
path.expand(path)
dir.create(path, showWarnings = TRUE, recursive = FALSE, mode = "0777")
dir.exists(paths)
Sys.chmod(paths, mode = "0777", use_umask = TRUE)
Sys.umask(mode = NA)

- path – 字符串表示的路劲,路劲已经过path.expand处理
- paths – 字符向量包含文件名或路劲, 路劲已经过path.expand处理
- showWarnings – 逻辑值,是否提示错误信息;
- recursive – 逻辑值,是否创建子目录
- mode – 八进制表示的权限,r=4,w=2,x=1 (windows环境下该参数无效)

- use_umask – 逻辑值,mode是否受umask 设置的限制;

#读取环境变量R_USER,返回C:/Users/XXXX/Documents
Sys.getenv('R_USER')
#使用home path替换波浪号,返回C:/Users/XXXX/Documents/foo
path.expand("~/foo")#在当前工作目录下创建文件夹testfolder
dir.create(file.path(getwd(), 'testfolder'))
#默认的recursive为FALSE,创建子目录失败
dir.create(file.path(getwd(), 'testfolder2', 'subfolder'))
#文件夹不存在返回FALSE
dir.exists(file.path(getwd(), 'testfolder2', 'subfolder'))
#设置recursive为TRUE,创建子目录
dir.create(file.path(getwd(), 'testfolder2', 'subfolder'), recursive = TRUE)
#创建成功返回TRUE
dir.exists(file.path(getwd(), 'testfolder2', 'subfolder'))#设置文件目录的最大权限
Sys.chmod(list.dirs("."), "777")
  • 查询和设置R包使用路劲
.libPaths(new)

不带参数时.libPaths()会显示当前使用的R包路劲,设置参数可用于设置当前R包路径,对于安装多版本R语言的情况,可以通过使用.libPaths设置使用的R包路劲。

#设置R包路劲为R-3.2.2下的library
.libPaths("C:/Users/XXXX/Documents/R/R-3.2.2/library")
  • 文件处理
file.create(..., showWarnings = TRUE)
file.exists(...)
#成功返回0,失败返回-1
file.access(names, mode = 0)
file.remove(...)
#删除文件及目录
unlink(x, recursive = FALSE, force = FALSE)
file.rename(from, to)
file.append(file1, file2)
file.copy(from, to, overwrite = recursive, recursive = FALSE, copy.mode = TRUE, copy.date = FALSE)
file.show(..., header = rep("", nfiles),title = "R Information", delete.file = FALSE, pager = getOption("pager"), encoding = "")
file.symlink(from, to)
file.link(from, to)
Sys.junction(from, to)

- from, to - 字符串向量表示的文件或路径
- overwrite - 逻辑值,是否覆盖已存在的文件
- showWarnings – 逻辑值,出错是否显示warning信息
- recursive – 逻辑值,是否复制子目录文件
- copy.mode - 逻辑值,是否同时复制文件权限
- copy.date – 逻辑值,是否保留文件日期
- mode – 接入模式,0,是否存在;1,是否可执行(windows没有可执行概念, 后缀为.exe, .bat, .cmd或.com的文件会被视为可执行文件);2,是否可写;4,是否可读;

#文件不存在则创建文件,存在则覆盖之前的文件
file.create('cretestfile.txt')
#判断文件是否存在,返回TRUE
file.exists('cretestfile.txt')
#默认mode = 0判断文件是否存在,存在返回0
file.access('cretestfile.txt')
#删除文件cretestfile.txt,文件不存在会返回warning信息
file.remove('cretestfile.txt')#读取bin目录下所有文件及目录
d <- dir(file.path(R.home(), "bin"))
#读取bin目录下所有文件及目录(包含全路径)
df <- dir(file.path(R.home(), "bin"), full.names = TRUE)
#列出所有存在的文件
d[file.access(df, 0) == 0]
#列出所有可执行文件
d[file.access(df, 1) == 0]
#列出所有可写文件
d[file.access(df, 2) == 0]
#列出所有可读文件
d[file.access(df, 4) == 0]#创建并写入数据到文件A.txt和B.txt
cat("file A\n", file = "A.txt")
cat("file B\n", file = "B.txt")
cat("file C\n", file = "C.txt")
#添加文件C.txt的内容到A.txt和B.txt
file.append(c("A.txt", "B.txt"), "C.txt")
#修改文件名C.txt为D.txt
file.rename("C.txt", "D.txt")
#复制D.txt中的内容10遍,添加到文件A.txt和B.txt各5次
file.append(c("A.txt", "B.txt"), rep("D.txt", 10))
#读取文件A.txt和B.txt的内容
file.show(c("A.txt", "B.txt"))
#复制文件D.txt到C.txt
file.copy("D.txt", "C.txt")
#C.txt已存在,设置overwrite = TRUE进行覆盖
file.copy("D.txt", "C.txt", overwrite = TRUE)
#新建tmp文件夹,并拷贝A.txt和B.txt到tmp文件夹下
dir.create("tmp")
file.copy(c("A.txt", "B.txt"), "tmp")
#删除tmp文件夹
unlink("tmp", recursive = TRUE)
#删除文件
unlink(c("A.txt", "B.txt", "C.txt","D.txt"))
  • 文件信息查询
file.info(..., extra_cols = TRUE)
file.mode(...)
file.mtime(...)
file.size(...)

file.info返回文件相关信息:

- size – doule类型,表示文件大小Bytes
- isdir – 逻辑值,表示是否文件夹或者文件
- mode – 8进制表示的权限,r=4,w=2,x=1 
- mtime – 最近一次修改的时间
- ctime – 最近一个状态改变的时间,例如在写入文件、更改所有者、权限、属性或链接设置,mtime的改变必然导致ctime的改变
- atime -读取文件或者执行文件时更改

- exe – 可执行类型,返回值包含no,msdos, win16, win32, win64 和unknown

#返回当前目录下所有文件及目录的信息
file.info(list.files())
#返回当前目录下所有文件的mode
file.mode(list.files())
file.info(list.files())$mode
#返回当前目录下所有文件的最近一次修改时间
file.mtime(list.files())
file.info(list.files())$mtime
#返回当前目录下所有文件的大小,目录size返回为0
file.size(list.files(()))
file.info(list.files())$size

【R语言】文件及路劲操作相关推荐

  1. 掌握R语言文件读取方法

    目标 掌握 R语言文件读取方法 学习笔记 utils包内Date Input用法 base包内readLines用法 stringi包内stri_read_lines xlsx包内Date Input ...

  2. R语言常用快捷键、excel操作、绘制、统计

    Ctrl + 1:移动鼠标至代码区(左上区) Ctrl + 2:移动鼠标到控制台(左下区) Ctrl + L:对控制台(左下区)清屏 Ctrl + Shift + N: 新建一个R脚本文件 Ctrl ...

  3. R语言︱文件读入、读出一些方法罗列(批量xlsx文件、数据库、文本txt、文件夹)

    笔者寄语:小规模的读取数据的方法较为简单并且多样,但是,批量读取目前看到有以下几种方法:xlsx包.RODBC包.批量转化成csv后读入. R语言中还有一些其他较为普遍的读入,比如代码包,R文件,工作 ...

  4. R语言 | 常用统计量 基本函数 常规操作

    转自:https://blog.csdn.net/sinat_26917383/article/details/51182358 先言:R语言常用界面操作 帮助:help(nnet) = ?nnet ...

  5. R语言学习之路——进入R的大门

    数据分析之R语言 基础统计指标 指标 描述 均值(mean) 即平均数,mean=1/n*sum(X1:Xn);均值能够利用所有已知信息,但是对异常值(极小或极大值)很敏锐: 中位数(median) ...

  6. R语言中的管道函数操作 %>%

    R语言中的管道操作 %>% :相当于将左边的作为右边函数的第一个参数. 快捷键:ctrl+shift+M 例如:f(x,y)等价于x %>% f(y) g(f(x,y),z)等价于x %& ...

  7. c语言路径搜索,c语言程序(单元路劲及多元路径的搜索)

    单元路劲及多元路径的搜索 //单元路劲及多元路径的搜索 #include # define N 10 # define MAX 10000 typedef struct nam { int numbe ...

  8. R语言自学-准备0-1-基本操作

    一.赋值运算符 与大多数其他语言不同,R除了使用通常的=运算符赋值外,还使用<-或者->运算符.在R语言中<-或者->运算符就相当于=号,唯一的区别是<-和->指明 ...

  9. R语言学习笔记-RStudio基础操作

    1.快捷键 RStudio console下: Tab键:自动补齐功能 Ctrl + 上键 : 显示之前的输入代码 Alt + Shift + K :显示所有的快捷键 esc : 中断当前操作 ctr ...

最新文章

  1. 微信windows版_刚刚微信内测更新!可以批量管理好友,太方便了
  2. 当前工作目录Python
  3. CPU为什么是方形而不是圆形的?
  4. Java Virtual Machine
  5. C语言 sizeof 和 strlen 函数区别 - C语言零基础入门教程
  6. 关于 LDTP 操纵 windows 控件。
  7. go-import下划线的作用
  8. 阿里巴巴2010校园招聘笔试题
  9. 《逐梦旅程:Windows游戏编程之从零开始》
  10. 低代码平台集成方案,打通企业内部业务管理系统
  11. linux编译gdal geos,GDAL编译支持GEOS
  12. 【NLP】4 gensim word2vec库入门——官方手册embeddings和KeyedVectors
  13. Javascript_备忘录1
  14. [乡土民间故事_徐苟三传奇]第七回_赵财主之母配孟德
  15. Zerg 族历史简介
  16. 数值分析--matlab迭代求根式
  17. 虚拟号的运营商一般是哪家的?你知道吗?
  18. qlikview连接数据库
  19. 自定义网易云播放页面
  20. 转一篇Decorator模式的讲解文章

热门文章

  1. C语言最大公约数,最小公倍数。
  2. 树莓派Kali系统 HDMI 修改屏幕分辨率
  3. Freekan源码搭建视频网站,并实现公网远程访问
  4. 用python轻松玩转Excel,完成数据分析与统计,学习心得分享
  5. 学校无盘服务器配置,学校无盘服务器配置
  6. 群智能算法第3关:粒子群算法 - 目标函数最优解计算
  7. MSET算法参差分析(二)
  8. redis五种数据类型及使用场景
  9. 问答机器人排序模型4
  10. L6470步进电机驱动芯片