如何在读入 R 之前删除文本文件的空第一列

How to delete empty first column of text file before reading into R

我有一个巨大的文本文件,它的第一列是空的,但它有一个列 header。我被告知不要手动删除列 header 因为这个文本文件被另一个应用程序使用。我无法显示它,因为我无法在 R 中阅读它。我听说过 colClasses 但无法使其工作。我也试过 fread 来自 data.table 但没有成功。这是我正在谈论的一个小例子:

我想删除带有a 和a 的第一列。 我试过这个:

require(data.table) 
pp <- fread("myfile.txt", drop = 1)
head(pp)

但是报错: 警告信息: 在 fread("myfile.txt,', drop = 1) 中: 在第 3 行提前停止。预期有 524 个字段,但找到了 523 个。 提前致谢。

更新: 这是一个更好的可重现示例。我能够使用 pp <- fread("myfile.txt", skip = 1) 将我的数据集读入 R,但我的列名向右移动,现在我的最后一列充满了 NA。如何删除 a 列名并向左移动所有不带 NA 的列名? 这是一些记录的快照和输出:

    a year   fday  first    sec third
1: 1998    1 21.633 21.535 21.481    NA
2: 1998    2 21.146 20.936 20.838    NA
3: 1998    3 20.725 20.651 20.599    NA
4: 1998    4 20.716 20.653 20.620    NA
5: 1998    5 19.606 19.493 19.459    NA
6: 1998    6 18.501 18.314 18.231    NA

pp <- structure(list(a = c(1998L, 1998L, 1998L, 1998L, 1998L, 1998L
), year = 1:6, fday = c(21.633, 21.146, 20.725, 20.716, 19.606, 
18.501), first = c(21.535, 20.936, 20.651, 20.653, 19.493, 18.314
), sec = c(21.481, 20.838, 20.599, 20.62, 19.459, 18.231), third = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_)), row.names = c(NA, 
-6L), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x05f82498>)

The final dataset should look like this:
   year   fday  first    sec third
1: 1998    1 21.633 21.535 21.481    
2: 1998    2 21.146 20.936 20.838    
3: 1998    3 20.725 20.651 20.599    
4: 1998    4 20.716 20.653 20.620    
5: 1998    5 19.606 19.493 19.459    
6: 1998    6 18.501 18.314 18.231 
pp <- data.table::fread("myfile.txt",skip=1)

所以您已经有了所需的数据,但列混乱了?

试试这个 -

#Rename column 1 to n-1
names(pp)[-ncol(pp)] <- names(pp)[-1]
#Drop the last column.
pp[[ncol(pp)]] <- NULL
pp

#   year fday  first    sec  third
#1: 1998    1 21.633 21.535 21.481
#2: 1998    2 21.146 20.936 20.838
#3: 1998    3 20.725 20.651 20.599
#4: 1998    4 20.716 20.653 20.620
#5: 1998    5 19.606 19.493 19.459
#6: 1998    6 18.501 18.314 18.231