R 快速测试目录是否为空
测试目录是否为空的最快方法是什么 当然,我可以检查长度R 快速测试目录是否为空,r,performance,directory,is-empty,R,Performance,Directory,Is Empty,测试目录是否为空的最快方法是什么 当然,我可以检查长度 list.files(path, all.files = TRUE, include.dirs = TRUE, no.. = TRUE) 但这需要枚举目录的全部内容,我宁愿避免这样做 编辑:我正在寻找便携式解决方案 编辑^2:大型目录的一些计时(在最初为空的目录中运行此操作,将创建100000个空文件): -f开关对于ls至关重要,它将避免否则将发生的排序。如果(长度(dir(all.files=TRUE))==0)如何呢 我不确定什么是
list.files(path, all.files = TRUE, include.dirs = TRUE, no.. = TRUE)
但这需要枚举目录的全部内容,我宁愿避免这样做
编辑:我正在寻找便携式解决方案
编辑^2:大型目录的一些计时(在最初为空的目录中运行此操作,将创建100000个空文件):
-f
开关对于ls
至关重要,它将避免否则将发生的排序。如果(长度(dir(all.files=TRUE))==0)如何呢
我不确定什么是“fast”,但如果dir
需要很长时间,就会有人滥用您的文件系统:-(.我刚刚删除了我的评论(仅在linux解决方案上),但您是对的,可移植性是一个很好的特性。这个问题有一条评论建议rmdir
哪一个“应该”如果目录不为空,则失败。检查您的权限级别!是的,但是…对于空目录或“不太大”目录,速度更快吗?您更可能遇到哪些目录?:-(@CarlWitthoft:是的,对于“不太大”目录,气泡排序比快速排序更快)数据…我想知道,我很好奇,我发布了一个问题。让我们拭目以待,看看是否有一个好的答案。OP提到他希望避免枚举目录的全部内容(和dir
=list.files
)如果没有all.files=TRUE
您将错过隐藏files@dickoa很好,抱歉。但是我看不出枚举有什么不好(因为我没有将对象返回到环境中)事实上没那么糟糕,但可能是OP只是在寻找一种更有效的替代方案。我使用linux,对于这类任务,如果我想快速完成,我会通过系统@CarlWitthoft使用shell。我在这里真的很挑剔。列举可能不是明显的性能明智之举,除非使用速度较慢的文件系统nd目录包含许多条目。(您称之为“滥用”,但可能会发生)。dir
比自己调用操作系统快得多。将system.time(dir())
与system.time(system(“ls”,TRUE))
进行比较。
system.time(file.create(as.character(0:99999)))
# user system elapsed
# 0.720 12.223 14.948
system.time(length(dir()))
# user system elapsed
# 2.419 0.600 3.167
system.time(system("ls | head -n 1"))
# 0
# user system elapsed
# 0.788 0.495 1.312
system.time(system("ls -f | head -n 3"))
# .
# ..
# 99064
# user system elapsed
# 0.002 0.015 0.019