12.1 base R
base R 中提供了一组函数与计算机系统文件交互,从文件创建、复制、删除等常规文件操作。
12.1.1 用法
本小节主要将base R中常用的文件函数举例说明用法。
- 常用函数
# 查看路径下的文件列表
list.files()
#> [1] "_book" "_bookdown.yml"
#> [3] "_bookdown_files" "_common.R"
#> [5] "_output.yml" "01-datatable.Rmd"
#> [7] "02-database.Rmd" "03-strings.Rmd"
#> [9] "04-lubridate.Rmd" "05-forcats.Rmd"
#> [11] "06-tidy-data.Rmd" "07-Data-manipulation.Rmd"
#> [13] "08-loop.Rmd" "09-iteration.Rmd"
#> [15] "10-function.Rmd" "book.bib"
#> [17] "data" "Data-Handling-in-R.log"
#> [19] "Data-Handling-in-R.Rmd" "Data-Handling-in-R_files"
#> [21] "desktop.ini" "file-manipulation.Rmd"
#> [23] "index.Rmd" "packages.bib"
#> [25] "picture" "preamble.tex"
#> [27] "Rbook.Rmd" "Rbook.Rproj"
#> [29] "read-write-data.Rmd" "README.md"
#> [31] "rsconnect" "style.css"
# 创建文件夹
dir.create('test folder')
# 是否存在
dir.exists('test folder')
#> [1] TRUE
# 删除文件夹
unlink('test folder',recursive = TRUE,force=TRUE)
# 注意recursive参数为TRUE,文件夹才能被删除
- 函数介绍
file.create(..., showWarnings = TRUE)
file.exists(...)
file.remove(...)
file.rename(from, to)
file.append(file1, file2)
file.copy(from, to, overwrite = recursive, recursive = FALSE,
copy.mode = TRUE, copy.date = FALSE)
file.symlink(from, to)
file.link(from, to)
其中需要注意的参数即recursive,是否递归?像macos或linux上的cp -R
命令。
getwd()
#> [1] "C:/Users/zhongyf/Desktop/Rbook"
file.create()
:用指定的名称创建文件。创建成功则返回TRUE,失败将返回警告。
file.create('test.txt')
#> [1] TRUE
file.create('test.csv')
#> [1] TRUE
file.exists()
:返回文件是否存在的逻辑向量,如果存在则返回TRUE
file.exists(c('test.txt','test.csv'))
#> [1] TRUE TRUE
file.remove()
:删除指定名称文件。
file.remove('test.txt')
#> [1] TRUE
file.rename()
:尝试重命名文件。
file.rename(from = 'test.csv',to = 'newtest.csv')
#> [1] TRUE
file.append()
:尝试将第二个文件追加到第一个文件
cat("文件ta的内容\n", file = "ta.txt")
cat("文件tb的内容\n", file = "tb.txt")
file.append("ta.txt", "tb.txt")
#> [1] TRUE
cat(readLines('ta.txt'))
#> 文件ta的内容 文件tb的内容
file.copy()
:复制文件
dir.create('test')
file.copy(from = 'ta.txt',to = './test',overwrite = T,recursive = TRUE)
#> [1] TRUE
file.symlink()
:建立符号链接18,在winOS系统上即快捷方式,MacOS上即替身,linux上即软连接类似ln -s
。
file.symlink(from = 'ta.txt',to = 'newab.txt')
#> Warning in file.symlink(from = "ta.txt", to = "newab.txt"): 无法打
#> 开'ta.txt'到'newab.txt'的链结,原因是'客户端没有所需的特权。'
#> [1] FALSE
file.link()
:建立硬链接
详情可以参考文章
对数据分析而言,没有特别重要(可能在shiny部署时能用到),请自行了解软链接硬链接。↩︎