根据文档:
dir(path = ".", pattern = NULL, all.files = FALSE,
full.names = FALSE, recursive = FALSE,
ignore.case = FALSE, include.dirs = FALSE)
all.files: a logical value. If 'FALSE', only the names of visible
files are returned. If 'TRUE', all file names will be
returned.
实际上,至少在 Win7 x64 上,具有:
dir(all.files = FALSE)
我还列出了attrib
设置为:
_HSA_________
和:
dir (all.files = TRUE)
我还得到了无意义的目录占位符:
[1] "." ".."
那你呢 ?
更新:解决方案、设计策略还是错误?
经过一些进一步的调查,我可以提供一些(希望)有用的见解。众所周知,在 Linux 中,以“点”开头的文件被认为是隐藏的,而在基于属性的 Windows 中并非如此。(的dir()
功能)R 遵循 Linux 约定。在 Windows 上,这可能会导致许多问题。
如果你发布一个标准dir()
,即如果你查询可见文件,你也会得到隐藏文件,更严重的是,你可能不会得到可见文件,只是因为它们以一个无辜的点开头,这在 Windows 中没有特别的意义。这意味着在 Windows 中,该标准dir()
根本没有用,除非您在确定没有点文件的受控环境中操作。
dir (all.files = TRUE)
假设您对排除隐藏/系统文件不感兴趣,可能会部分有用。但这仅适用于交互式使用。
总是添加两个名为and的dir (all.files = TRUE)
假文件(好吧,总是除了 root)。这意味着像这样用于检查目录是否为空的行在 Windows 上不起作用:.
..
if (length(dir(all.files = TRUE))==0) cat('I am empty\n')
这种行为是设计实现的吗?
有人可能会回答,因为 Rdir()
以这种方式复制了 Windows shell 命令dir
。恕我直言,外壳dir
主要不是用于批量使用;而 R 命令应该用于编程任务。无论如何,为什么这种复制行为只在 何时显示all.files = TRUE
?
可以肯定的是,R 编码人员总是非常友好地详细说明文档中不同操作系统之间的差异,而在这种情况下( http://stat.ethz.ch/R-manual/R-patched/library/base /html/list.files.html)单词“Windows”永远不会出现。
你有什么意见?我错过了什么吗?还是提交实际错误的情况?