在R中读取txt文件时出错

时间:2017-10-19 17:54:51

标签: r read.table

我想知道在使用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并手动删除标题行是不现实的。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

出于验证目的,我刚刚从标题部分删除了主题字词,并且已成功读取为包含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))