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():建立硬链接

详情可以参考文章


  1. 对数据分析而言,没有特别重要(可能在shiny部署时能用到),请自行了解软链接硬链接。↩︎