【问题标题】:R - readLines outputs empty linesR - readLines 输出空行
【发布时间】:2013-10-09 14:58:51
【问题描述】:

我遇到了readLines()-函数的一些奇怪行为,它基本上包含在所有 R 运行中。正如我之前已经完成了数百次或数千次一样,我尝试像这样读取文件的行:

workingDir <- ""

tempFile <- file(paste(workingDir, "/stationaer_mittel004_head3D.csv", sep="", collapse=""), open="r")
s_mittel001_head <- readLines(tempFile)
close(tempFile)
s_mittel001_head

这不会正确读取文件内容并导致如下结果:

[1] "\"" ""   ""   ""   ""

如果我对文件名做错了什么,我会进行双重、三重和四重检查,但在文件或网络浏览器中访问文件时它工作得很好。随后,我直接将文件内容复制到另一个 csv 并尝试打开这个。它确实奏效了。我在笔记本电脑的管理员帐户上,两个文件都没有显示特殊权限限制。创建具有相同文件名的新文件也可以解决此问题。

**这就是为什么我想知道是否有人知道可能导致这种行为的原因。

谢谢!**

【问题讨论】:

  • 可以直接在文件名上调用readLines,不需要打开和关闭连接。
  • 看起来像通常的 vs vs 行终止问题。您的原始文件可能是用 MicrosoftWord 等撒旦的产物创建的,因此包含不受欢迎的 EOL 字符。
  • 实际上,它是由 Modelmuse 创建的,Modelmuse 是地下水流模型 Modflow(和朋友)的前处理器和后处理器。在使用相同的功能创建类似的文件后,我绝对同意你的看法。这正是 Modelmuse 输出文件的方式。

标签: r file readlines


【解决方案1】:

正如@CarlWitthoft 指出的那样,readLines() 在读取具有某些换行符类型的 ASCII 文件时遇到问题(不知道究竟是哪个: vs vs )。这会产生一个实际上是空字符串的列表。此外,该函数似乎无法看到文件的结尾。

最终解决方案:使用具有“更合适”换行标准的程序将文件内容复制并粘贴到新文件中。

【讨论】:

    【解决方案2】:

    对我来说,这将我引向这篇帖子 https://github.com/tidyverse/readr/issues/857mcleanle 的评论让我走上了正确的道路。
    根本原因实际上是编码语言。我的文件被编码为UCS-2 LE BOM,更改为UTF-8 为我解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      相关资源
      最近更新 更多