在 R 中读取带有多个空格作为分隔符的文本文件

我有一个大数据集,由大约94列和300万行组成。此文件在列之间使用单个或多个空格作为分隔符。我需要从 R 中的这个文件中读取一些列。为此,我尝试使用 read.table ()和一些选项,这些选项可以在下面的代码中看到,代码粘贴在下面-

### Defining the columns to be read from the file, the first 5 column, then we do not read next 24, after this we read next 5 columns. Last 60 columns are not read in-


col_classes = c(rep("character",2), rep("numeric", 3), rep("NULL",24), rep("numeric", 5), rep("NULL", 60))


### Reading first 100 rows of the data


data <- read.table(file, sep = " ",header = F, nrows = 100, na.strings ="", stringsAsFactors= F)

由于必须读入的文件有多个空格作为某些列之间的分隔符,因此上述方法不起作用。有没有什么方法可以让我们有效地读取这个文件。

110281 次浏览

您需要更改您的分隔符。ABc0指的是一个空白字符。""引用任意长度的空格作为分隔符

 data <- read.table(file, sep = "" , header = F , nrows = 100,
na.strings ="", stringsAsFactors= F)

手册上说:

如果 sep = “”(read.table 的默认值) ,分隔符是“空格”,即返回一个或多个空格、制表符、换行符或回车符。

另外,对于大型数据文件,您可能需要考虑使用 data.table:::fread将数据直接读入 data.table。今天早上我正在使用这个函数。虽然还处于试验阶段,但我发现它确实非常有效。

如果字段具有固定的宽度,则应考虑使用 read.fwf(),它可能更好地处理缺失值。

如果希望改用 tidyverse(或者分别使用 readr)包,可以改用 read_table

read_table(file, col_names = TRUE, col_types = NULL,
locale = default_locale(), na = "NA", skip = 0, n_max = Inf,
guess_max = min(n_max, 1000), progress = show_progress(), comment = "")

看这里的描述:

read_table() and read_table2() are designed to read the type of textual data where
each column is #' separate by one (or more) columns of space.