【发布时间】:2022-01-05 14:51:29
【问题描述】:
我有以下代码用于从计算机上的特定文件夹中检索文本文件:
MenthueFolder<-list.files(path = path.source, recursive = TRUE, pattern = "\\.txt$")
path.source 已指定到我的工作目录。递归部分告诉 R 搜索所有子文件夹,直到找到 .txt 文件(这是模式规范)。
我的姓名文本文件有两种格式:name##.txt 和 NAME##.txt。
我已设法检索所有以小写字母命名的文本文件,但无法获取大写字母文件。有谁知道我必须指定的函数中是否有参数?
感谢大家的帮助!
【问题讨论】:
-
可以安全地假设这是 Windows 驱动器上的 Windows 系统吗?
-
这在 Linux 上运行良好:
setwd("/tmp"); system("touch name.txt; touch NAME.txt"); list.files(pattern="\\.txt")→[1] "name.txt" "NAME.txt"。正如@r2evans 所暗示的,也许您正在通过一些不区分大小写的文件系统层(例如 MacOS 文件系统)? -
它确实是一个 Windows 驱动器。你建议我做什么?
-
(假设是 windows。)Windows 的文件系统在文件名方面不区分大小写。如果我先
echo "1" > name.txt,然后是echo "2" > NAME.txt,那么就有一个名为name.txt的文件,其内容为2。在这种情况下,file.exists("name.txt")和file.exists("NAME.txt")都将返回TRUE,即使它们确实指向同一个文件。 -
不要相信
file.exists(.)告诉你文件名有小写和大写两种变体。我不知道是否可以真正创建名称不同的单独文件,以防万一;即使有可能,我怀疑大多数(全部?)实用程序(使用 windows system32 文件系统调用)访问该文件系统都会被欺骗,因此无法读取这两个文件之一。如果您确实有这种情况,我建议您找到一种方法将两者之一重命名(Windows Explorer 是否同时看到两者?)无论大小写如何都是唯一的。