【发布时间】:2011-01-23 23:30:45
【问题描述】:
作为在 Windows 下运行的 R 中执行的更大任务的一部分,我想在目录之间复制选定的文件。是否可以在 R 中提供类似cp patha/filea*.csv pathb 的命令(注意通配符,以获得额外的趣味)?
【问题讨论】:
作为在 Windows 下运行的 R 中执行的更大任务的一部分,我想在目录之间复制选定的文件。是否可以在 R 中提供类似cp patha/filea*.csv pathb 的命令(注意通配符,以获得额外的趣味)?
【问题讨论】:
你可以
system() 像在shell 上一样触发命令,包括通配符list.files() aka dir() 进行匹配自己的 globbing / reg.exp 并单独复制文件file.copy,如 mjv 的回答所示【讨论】:
dir。它与list.files完全相同...奇怪的是两者都有
我不认为有直接的方法(避免炮轰),但类似以下的方法通常对我有用。
flist <- list.files("patha", "^filea.+[.]csv$", full.names = TRUE)
file.copy(flist, "pathb")
注意事项:
^ 和$(字符串的beg/end)——这是一个常见的陷阱,因为它们隐含在通配符类型模式中,但对于正则表达式是必需的(以免某些文件名匹配通配符模式,但也可以选择以附加文本开头和/或结尾)。ignore.case = TRUE 参数添加到 list.files,以模拟此操作系统的目录搜索不区分大小写这一事实。glob2rx() 函数提供了一种将通配符模式转换为正则表达式的便捷方法。例如,fpattern = glob2rx('filea*.csv') 返回一个不同但等效的正则表达式。【讨论】:
"^filea.+[.]csv"。
ignore.case = TRUE。我相应地进行了编辑,谢谢。
file.copy() 中添加overwrite = TRUE!调试这个花了一个小时。