首页 > 解决方案 > 在 R 中读取和过滤具有不同列数的 .DAT 文件

问题描述

我有一个.dat测量文件。其中一些数据是“损坏的”。应跳过损坏数据所在的行。数据损坏的行的列数超过 6 或低于 6。但是我只需要 6 列的行。所以我尝试Daten2.DAT用 R读取文件data.table。(参见图片)有人知道我如何跳过不等于 6 列的行吗?

标签: rdata.tableread.table

解决方案


不是用 读取数据,而是用 读取数据data.table::freadreadLines用逗号分隔行,然后解析行。

ncols <- 6
y <- readLines(con = "Daten2.DAT")
y <- strsplit(y, ",")
y <- lapply(y, function(line_read){
  if(length(line_read) != ncols) NULL else line_read
})
y <- y[!sapply(y, is.null)]
df1 <- do.call(rbind.data.frame, y)
names(df1) <- paste0("Col", seq_len(ncols))

这假定文件中没有包含列标题的第一行。


推荐阅读