代码之家  ›  专栏  ›  技术社区  ›  gappy

使用r复制文件

  •  30
  • gappy  · 技术社区  · 14 年前

    作为在windows下的r run中执行的更大任务的一部分,我希望在目录之间复制选定的文件。有没有可能在r中发出如下命令 cp patha/filea*.csv pathb (请注意通配符,以获得额外的香料)?

    2 回复  |  直到 6 年前
        1
  •  46
  •   MichaelChirico    8 年前

    我不认为有什么直接的方法(避免炮轰),但像下面这样的方法通常对我有效。

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

    笔记:

    • 我故意分解为两个步骤,它们可以组合在一起。
    • 请参见正则表达式:r使用true regex,并用两个独立的参数将文件模式与路径分离。
    • 注意 ^ $ (beg/end of string)在regex中——这是一个常见的gotcha,因为这些是通配符类型模式的隐式形式,但regex是必需的(以免也选择一些与通配符模式匹配但以附加文本开头和/或结尾的文件名)。
    • 在windows世界中,人们通常会添加 ignore.case = TRUE 论证 list.files ,以便模拟此操作系统对目录搜索不区分大小写的事实。
    • R氏 glob2rx() 函数提供了将通配符模式转换为正则表达式的方便方法。例如 fpattern = glob2rx('filea*.csv') 返回不同但等效的正则表达式。
        2
  •  12
  •   Dirk is no longer here    14 年前

    你可以

    • 使用 system() 像炮弹一样发出命令,包括环球飞行
    • 使用 list.files() 阿卡 dir() 执行globbing/reg.exp匹配您自己并单独复制文件
    • 使用 file.copy 关于个人档案,如MJV的回答所示