【问题标题】:list.files not showing text files with capital letter names?list.files 不显示带有大写字母名称的文本文件?
【发布时间】: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" &gt; name.txt,然后是echo "2" &gt; NAME.txt,那么就有一个名为name.txt 的文件,其内容为2。在这种情况下,file.exists("name.txt")file.exists("NAME.txt") 都将返回 TRUE,即使它们确实指向同一个文件。
  • 不要相信file.exists(.) 告诉你文件名有小写和大写两种变体。我不知道是否可以真正创建名称不同的单独文件,以防万一;即使有可能,我怀疑大多数(全部?)实用程序(使用 windows system32 文件系统调用)访问该文件系统都会被欺骗,因此无法读取这两个文件之一。如果您确实有这种情况,我建议您找到一种方法将两者之一重命名(Windows Explorer 是否同时看到两者?)无论大小写如何都是唯一的。

标签: r list text


【解决方案1】:

答案:指定ignore.case=TRUE 如:

MenthueFolder<-list.files(path = path.source, recursive = TRUE, pattern = "\\.txt$", ignore.case = TRUE)

【讨论】:

    猜你喜欢
    • 2022-06-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    相关资源
    最近更新 更多