如何读取标题但跳过行 - read.table()?

时间:2014-05-08 13:54:02

标签: r header skip read.table read.csv

DATA.TXT:

Index;Time;
1;2345;
2;1423;
3;5123;

代码:

dat <- read.table('data.txt', skip = 1, nrows = 2, header =TRUE, sep =';')

结果:

  X1 X2345
1  2  1423
2  3  5123

我希望标题是索引和时间,如下所示:

  Index Time
1   2   1423
2   3   5123

我该怎么做?

5 个答案:

答案 0 :(得分:34)

我担心,没有直接的方法来实现这一目标。您要么读完整个表格,然后删除您不想要的行,要么在表格中读取两次,然后再分配标题:

header <- read.table('data.txt', nrows = 1, header = FALSE, sep =';', stringsAsFactors = FALSE)
dat    <- read.table('data.txt', skip = 2, header = FALSE, sep =';')
colnames( dat ) <- unlist(header)

答案 1 :(得分:3)

您正在使用跳过错误。试试这个:

dat <- read.table('data.txt', nrows = 2, header =TRUE, sep =';')[-1, ]

答案 2 :(得分:2)

使用fread中的data.table的解决方案。

require(data.table)
fread("Data.txt", drop = "V3")[-1]

结果:

> fread("Data.txt", drop = "V3")[-1]
   Index Time
1:     2 1423
2:     3 5123

答案 3 :(得分:1)

而不是read.table(),使用readr函数,例如read_csv(),通过管道传输到dplyr::slice()

library(readr)
library(dplyr)
dat <- read_csv("data.txt") %>% slice(-1)

它也很快。

答案 4 :(得分:0)

你可以(在大多数情况下)sub结束;写一个没有第二行的新文件(由于标题实际上是第一行),并使用{{1而不是read.csv

read.table