在R中读取txt文件时出错

Posted

技术标签:

【中文标题】在R中读取txt文件时出错【英文标题】:Error while reading txt file in R 【发布时间】:2017-10-19 17:54:50 【问题描述】:

我想知道在 R 中使用 read.table 读取 txt 文件时遇到的以下错误是否可以得到帮助。

我的 txt 文件格式如下:

Subject ID  Span    Accuracy    Accuracy (SD)   Avg RT  Avg RT (SD) Median RT   Number of Trials    Date/Time   
1   2   1   0   3206    1702.713    3206    2   08/23/2016 12:54:13
1   3   1   0   2485.5  12.021  2485.5  2   08/23/2016 12:54:13
1   4   1   0   3513    0   3513    1   08/23/2016 12:54:13

我运行代码

test <- read.table('test.txt', sep = "\t")

我会得到错误

Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  : 
  line 2 did not have 10 elements

但是,如果我只在 txt 中包含标题并删除以下数据行,我可以运行相同的代码并获取:

> test
          V1   V2       V3            V4     V5          V6        V7               V8        V9
1 Subject ID Span Accuracy Accuracy (SD) Avg RT Avg RT (SD) Median RT Number of Trials Date/Time

如果我从 txt 中删除标题并仅包含 txt 中的数据行,我也可以运行相同的代码并得到:

> test
  V1 V2 V3 V4     V5       V6     V7 V8                  V9
1  1  2  1  0 3206.0 1702.713 3206.0  2 08/23/2016 12:54:13
2  1  3  1  0 2485.5   12.021 2485.5  2 08/23/2016 12:54:13
3  1  4  1  0 3513.0    0.000 3513.0  1 08/23/2016 12:54:13 

标题和数据似乎都包含 9 个元素,但如果我在同一个 txt 文件中同时包含标题行和数据行,我会收到错误消息“第 2 行没有 10 个元素”。我尝试使用 header = FALSE 但它给出了同样的错误。

如果有人能帮助我解决这个问题,我将不胜感激。我有大量格式相同的 txt 文件,因此打开每个 txt 并手动删除标题行对我来说是不现实的。

谢谢!

【问题讨论】:

这可能是因为您的列Date/Time的日期和时间值之间有一个空格字符。 也许在您最喜欢的编辑器中查看空白可能会帮助您解决问题。 【参考方案1】:

实际上,标题部分中有十列。如果仅导入标题,则 Subject 列将用作行名称的标签。

因此,您要么必须包含实际数据的行名(将是第 10 列),要么必须从输入文件中排除 主题

出于验证目的,我刚刚从标题部分删除了 Subject 术语,它被成功读取为具有 3 个观察值和 9 个变量的数据框。

structure(list(ID = c(1L, 1L, 1L), Span = 2:4, Accuracy = c(1L, 1L, 1L), Accuracy..SD. = c(0L, 0L, 0L), Avg.RT = c(3206, 2485.5, 3513), Avg.RT..SD. = c(1702.713, 12.021, 0), Median.RT = c(3206, 2485.5, 3513), Number.of.Trials = c(2L, 2L, 1L), Date.Time = structure(c(1L, 1L, 1L), .Label = "08/23/2016 12:54:13", class = "factor")), .Names = c("ID", "Span", "Accuracy", "Accuracy..SD.", "Avg.RT", "Avg.RT..SD.", "Median.RT", "Number.of.Trials", "Date.Time"), class = "data.frame", row.names = c(NA, -3L))

【讨论】:

以上是关于在R中读取txt文件时出错的主要内容,如果未能解决你的问题,请参考以下文章

将 .txt 文件读取到 R 中的选项卡

如何在matlab中读取TXT数据文件

从 .txt 文件 C 读取时重复最后一个字符串

R语言如何按行读取无序的TXT

r语言怎么读取txt文件

求助大神,R语言怎样读取txt文件中第三列1000-2000行的数据