Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 快速测试目录是否为空_R_Performance_Directory_Is Empty - Fatal编程技术网

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