为何R语言list.files()函数会返回不存在的文件?
问题原因与解决方法
为什么会出现~$开头的文件?
- 这些
~$开头的文件真实存在,只是Windows系统默认将它们标记为「隐藏文件」,所以你在文件管理器里看不到,但R的list.files()能读取到。 - 这类文件是Office套件(比如Word)的临时锁定文件:当你用Word打开某个txt文件时,Office会自动生成这个临时文件,用于防止多人同时编辑同一文件,文件命名规则就是
~$+原文件名。 all.files = FALSE参数无效的原因:这个参数只控制是否显示Unix风格的隐藏文件(以.开头的文件),对Windows系统标记为隐藏属性的文件不起作用,所以即使设置了该参数,这些~$文件还是会被列出。
更可靠的解决方法
方法1:用正则表达式直接排除~$开头的文件
# 匹配不以~开头、以.txt结尾的文件 txt_files <- list.files(pattern = "^[^~].*\\.txt$")
方法2:过滤Windows隐藏属性的文件
# 先获取所有txt文件 txt_files <- list.files(pattern = "\\.txt$") # 获取文件信息,筛选出非目录且非隐藏的文件 file_info <- file.info(txt_files) txt_files <- txt_files[!file_info$isdir & !file_info$hidden]
内容的提问来源于stack exchange,提问作者AngryBeaker
相关产品推荐
相关产品推荐

