利用R语言批量创建、移动、删除、修改文件

1.如何获取和更改当前工作目录

# 获取当前目录
getwd()

# 设置工作目录
setwd(“C:/Users”)

2.创建文件和目录

可以使用dir.create函数在R中创建一个新文件夹或目录,如下所示:

dir.create(“new_folder”)

利用file.create功能创建空白文件

file.create(“new_text_file.txt”)
file.create(“new_word_file.docx”)
file.create(“new_csv_file.csv”)

考虑到这一点,快速创建大量文件变得容易。 例如,下面的代码将创建100个空文本文件:

sapply(paste0(“file”, 1:100, “.txt”), file.create)

3.复制文件/文件夹

file.copy(“source_file.txt”, “destination_folder”)

4.如何列出目录中的所有文件

用R列出目录中所有文件的最简单方法是调用list.files

#列出当前目录中的所有文件
list.files()
#列出另一个目录中的所有文件
list.files(“ C:/ path/to /somewhere / else”)

列出所有子文件夹中的文件

list.files(“C:/path/to/somewhere/else”, recursive = TRUE)

运行默认的list.files不会列出文件的完整路径名。我们可以将参数full.names设置为TRUE,以获取完整的路径名。

list.files(“C:/path/to/somewhere/else”, full.names = TRUE, recursive = TRUE)

list.files还可以将过滤器应用于要列出的文件。例如,下面的R代码将列出目录中的所有CSV文件

#以非递归方式列出所有CSV文件

list.files(pattern = “.csv”)

如果要读取给定目录中的所有CSV文件,以上逻辑可能非常有用。例如,假设您在一个文件夹中有一个CSV列表,并且您想从所有文件中生成一个数据框(假设它们各自具有相同的布局)。您可以通过几行代码来完成此操作:

# read in all the CSV files
all_data_frames <- lapply(list.files(pattern = “.csv”), read.csv)

# stack all data frames together
single_data_frame <- Reduce(rbind, all_data_frames)

5.如何获得创建/修改文件的时间以及有关的其他详细信息

fileSnapshot在目录中获取文件的另一种方法是使用函数fileSnapshot。 fileSnapshot还将为您提供有关文件的其他详细信息。 此函数返回对象列表。

# get file snapshot of current directory
snapshot <- fileSnapshot()

# or file snapshot of another directory
snapshot <- fileSnapshot(“C:/some/other/directory”)

fileSnapshot返回一个列表,在这里我们仅将其称为“快照”。 通过引用“ info”可以从中获得最有用的信息:

size==>文件大小
isdir ==>是文件目录吗? ==> TRUE或FALSE
mode==>八进制的文件权限
mtime ==>上次修改的时间戳
ctime ==>时间戳创建
atime ==>上次访问的时间戳
exe ==>可执行文件的类型(如果不是可执行文件,则为“否”)

file.info
file.info与fileSnapshot相似,区别在于它返回与输入文件相对应的信息的单个记录。 例如,下面的代码将返回特定文件“ some_file.csv”的上面的字段(大小,isdir,模式,mtime等):

file.info(“some_file.csv”)

file.ctime(“C:/path/to/file/some_file.txt”)

file.mtime(“C:/path/to/file/some_file.txt”)

6.如何删除文件
可以使用R使用取消链接删除文件。删除单个文件就像将文件名传递给此函数一样简单。要删除目录,您必须添加参数recursive = TRUE。

# delete a file
unlink(“some_file.csv”)

# delete another file
file.remove(“some_other_file.csv”)

# delete a directory — must add recursive = TRUE
unlink(“some_directory”, recursive = TRUE)

sapply(paste0(“file”, 1:100, “.txt”), unlink)

7.检查文件是否存在

file.exists(“ C:/path/to/file/some_file.txt”)

#检查文件夹是否存在
file.exists(“C:/path/to/file/some_folder”)
#或者,检查是否存在带有dir.exists的文件夹
dir.exists(“C:/path/to/file/some_folder”)
无论现有文件是否为目录,运行file.exists都将返回TRUE,而仅当输入值存在且为目录时,dir.exists才会返回TRUE。

8.如何获取文件扩展名

可以使用工具包中的file_ext函数来获取文件扩展名。

library(tools)

file_ext(“C:/path/to/file.txt”) # returns “txt”

file_ext(“C:/path/to/file.csv”) # returns “csv”

9.如何运行打开文件

要打开或启动文件,请使用shell.exec或file.show函数:

# use shell.exec…
shell.exec(“C:/path/to/file/some_file.txt”)

# or file.show to launch a file
file.show(“C:/path/to/file/some_file.txt”)

10.如何打开文件选择窗口

要打开文件选择窗口,可以运行file.choose()

file.choose()运行此命令将返回用户选择的文件的名称。

11.如何移动文件

在撰写本文时,尚没有内置的基本R函数将文件从一个位置直接移动到另一个位置,但是可以使用filesstrings包及其函数file.move来实现:

library(filesstrings)
file.move(“C:/path/to/file/some_file.txt”, “C:/some/other/path”)

利用R语言批量创建、移动、删除、修改文件

如若转载,请注明出处:https://www.ouq.net/%e5%88%a9%e7%94%a8r%e8%af%ad%e8%a8%80%e6%89%b9%e9%87%8f%e5%88%9b%e5%bb%ba%e3%80%81%e7%a7%bb%e5%8a%a8%e3%80%81%e5%88%a0%e9%99%a4%e3%80%81%e4%bf%ae%e6%94%b9%e6%96%87%e4%bb%b6.html

(2)
打赏 微信打赏,为服务器增加50M流量 微信打赏,为服务器增加50M流量 支付宝打赏,为服务器增加50M流量 支付宝打赏,为服务器增加50M流量
上一篇 04/07/2020 12:06
下一篇 04/10/2020 00:15

相关推荐

  • R:使用GOplot对GO分析结果作图

    安装 # Installation of the latest released version install.packages(‘GOplot’) # Installation…

    04/28/2022
    240
  • Pheatmap包使用

    Pheatmap简介: Pretty Heatmaps——Implementation of heatmaps that offers more control over dime…

    R 03/15/2020
    207
  • R:计算数据框中每一行的标准偏差

    RowSD = function(x) {sqrt(rowSums((x – rowMeans(x))^2)/(dim(x)[2] – 1))}

    R 04/21/2022
    156
  • RStudio开发环境下载安装

    RStudio是为R语言设计的一种跨平台集成开发环境。其特色包括可客制化的软件套件视觉化界面与同团队开发的一系列数据可视化与出版工具。RStudio有免费的自由软件版本及收费的专业…

    03/12/2020
    209
  • ggplot2绘图教程

    直方图:geom_histogram 分组直方图的排列方式 position=”dodge” ggplot(small)+geom_histogram(aes(x=price, f…

    03/07/2022
    100