首页 > 解决方案 > 文件中有错误(con,“r”):lapply 时无法打开连接

问题描述

我有一个包含大约 100 个文件 txt 的文件夹。我只运行简单的代码:

> setwd("E:/Yunlin/SMUNPO/TXTFILE/")
> filenames <- list.files(getwd(),pattern="*.txt")
> textfiles <- lapply(filenames, readLines)

然而,结果是Error in file(con, "r") : cannot open the connection。我尝试设置工作目录,将文件名更改为简单,但都不起作用。我使用 readLines 函数测试特定文件名。有用。但不适用于所有文件夹。任何人都可以帮助,谢谢你提前?

标签: rtext-mining

解决方案


  • 必须在 中使用正则表达式样式的模式pattern,而不是 glob 样式。

    来自?list.files

     pattern: an optional regular expression.  Only file names which match
              the regular expression will be returned.
    

    所以它期待正则表达式,而不是全局样式的模式。

    使用以下选项之一:

    list.files(pattern = "\\.txt$")
    list.files(pattern = utils::glob2rx("*.txt"))
    

    (要学习正则表达式,我建议同时使用https://stackoverflow.com/a/22944075/3358272https://www.regular-expressions.info/。请注意,正则表达式中的反斜杠通常需要是双黑斜杠;因为例如,\bR 中的(单词边界)需要是\\b。)

  • 应该使用full.names=TRUE,排除对setwd/getwd舞蹈的需要。我建议类似:

    # no need for `setwd`
    filenames <- list.files("E:/Yunlin/SMUNPO/TXTFILE/", pattern = "\\.txt$", full.names = TRUE)
    

推荐阅读