用R来复制文件

时间:2010-03-05 04:10:09

标签: r file copy

作为在Windows下运行R的大型任务的一部分,我想在目录之间复制选定的文件。是否可以在R中给出像cp patha/filea*.csv pathb这样的命令(注意通配符,以获得额外的香料)?

2 个答案:

答案 0 :(得分:46)

我认为没有一种直接的方式(害羞的掏空),但以下的东西通常对我有用。

flist <- list.files("patha", "^filea.+[.]csv$", full.names = TRUE)
file.copy(flist, "pathb")

备注:

  • 我故意分两步分解,可以合并。
  • 请参阅正则表达式:R使用true regex,并在两个单独的参数中将文件模式与路径分开。
  • 注意正则表达式中的^$(字符串的结尾/结尾) - 这是一个常见问题,因为它们是通配符类型模式所隐含的,但需要使用正则表达式(以免一些文件名与通配符模式匹配,但也可以选择以其他文本开头和/或结尾。
  • 在Windows世界中,人们通常会将ignore.case = TRUE参数添加到list.files,以模仿目录搜索对此操作系统不区分大小写的事实。
  • R的glob2rx()函数提供了一种将通配符模式转换为正则表达式的便捷方法。例如,fpattern = glob2rx('filea*.csv')返回一个不同但等效的正则表达式。

答案 1 :(得分:12)

你可以

  • 使用system()触发命令,就像它在shell上一样,包括globbing
  • 使用list.files()又名dir()自行执行globbing / reg.exp匹配并单独复制文件
  • 对个别文件使用file.copy,如mjv的回答
  • 所示