Чтение данных из текстового файла

R может читать данные, сохраненные в текстовом (ASCII) файле. Для этого используются три функции: read.table() (которая имеет два варианта: read.csv() и read.csv2()), scan() и read.fwf().

Например, если мы имеем файл data.dat, то для того чтобы его прочитать можно набрать:

> mydata <-read.table ("data.dat")

mydata тогда будет объектом вида data.frame, и каждая переменная будет называться, по умолчанию, V1, V2... и к ним можно обратиться индивидуально mydata$V1, mydata$V2..., или mydata["V1"], mydata["V2"]..., или mydata[,1], mydata[,2], …

Однако, есть различия: mydata$V1 и mydata[,1] – векторы, тогда как mydata["V1"] - data.frame.

У функции read.table() есть несколько параметров:

read.table(файл, header=FALSE, sep = "", quote = "\"’", dec = ".", row.names =, col.names =, as.is=FALSE, na.strings = "NA", skip=0, fill = ! blank.lines.skip, check.names=TRUE, strip.white=FALSE, blank.lines.skip = TRUE)

Параметры:

файл название файла пишется (в кавычках " "), можно использоваться путь (символ \ не допустим, и должен быть заменен на /).
header логический (ЛОЖЬ или ИСТИНА) указывает, содержит ли файл названия переменных в начале строки.
sep разделитель полей используемый в файле, например sep = "\t", если это - табуляция.
quote символы, используемые для обозначения переменных символьного типа.
dec символ, используемый для отделения дробной части числа.
row.names вектор с названиями строк, которые могут быть векторами символьного типа, или числового (или название) переменной файла (по умолчанию: 1, 2, 3...).
col.names вектор с названиями колонок (по умолчанию: V1, V2, V3...).
as.is указывает преобразовать символьных значения в факторы (если ЛОЖЬ) или сохраняет их как символы (ИСТИНА).
na.strings показывает какое значение строки считать отсутствием данным (по умолчанию - NA). Пустое значение в числовой колонке тоже считается отсутствием данных.
skip число строк, которые будут пропущены перед чтением данных
fill = TRUE если в файле все поля заполнены.
check.names если ИСТИНА, то проверяется, допустимость имен переменных для R
strip.white (условное выражение к sep ), если ИСТИНА, то удаляются дополнительные пробелы до и после символьных переменных
blank.lines.skip Если имеет значение TRUE то пустые строки в файле игнорируются по умолчанию параметр имеет значение TRUE Мы можем изменить значение на FALSE, которое используется совместно с параметром fill = TRUE

Для ввода из файлов имеющих определенный формат используются команды read.csv и read.csv2 которые имеют следующие значения по умолчанию:

read.csv (файл, header = ИСТИНА, sep =,"", quote = " \ "", dec = ". "...)

read.csv2 (файл, header = ИСТИНА, sep = ";", quote = " \ "", dec = ", "...)

Функция scan() более гибкая, чем read.table() и имеет больше параметров. Главное отличие в том, что, при вводе можно указать тип переменных, например:

> mydata <-scan("data.dat", what=list (" ", 0,0))

в файле data.dat три переменные, первая имеет символьный тип и следующие две - числовой тип.

Формат scan()следующий:

> scan (file = "", what=double(0), nmax=-1, n=-1, sep="", quote=if(sep == "\n") " " else " ’ \ "", dec = ". ", skip=0, nlines=0, na.strings = "NA", flush=FALSE, strip.white=FALSE, quiet=FALSE)

Параметры:

file название файла пишется (в кавычках " "), можно использоваться путь (символ \ не допустим, и должен быть заменен на /), если file = " ", то данные вводят с клавиатуры .
what определяет типы данных
nmax количество читаемых данных, или, если what описывает список, количество читаемых строк (по умолчанию, scan читает данные до конца файла)
n количество читаемых данных, (по умолчанию все)
sep разделитель полей используемый в файле
quote символы, используемые для обозначения переменных символьного типа
dec символ, используемый для отделения дробной части числа.
skip число строк, которые будут пропущены перед чтением данных
nlines количество читаемых строк
na.strings присваивает значения, отсутствующим данным (показывает как NA)
flush логический, если TRUE, то scan переходит на следующую строку, как только достигнет последнего столбца
strip.white (условное выражение к sep ), если TRUE, то удаляются дополнительные пробелы до и после символьных переменных
quiet логический, если FALSE, scan отображает строку, показывающую, какие поля были прочитаны

Функция read.fwf() используется, для чтения данных имеющих определенный фиксированный формат:

read.fwf (файл, widths, sep = "\t ", as is=FALSE, skip=0, row.names, col.names)

Например, если файл data.txt имеет следующий вид:

A1
A1
B1
B1
C1
C1

То его можно прочитать следующим образом:

> mydata <-read.fwf("data.txt", widths=c(1,4,3))

> mydata

V1 V2 V3

1 А 1.50 1.2

2 А 1.55 1.3

3 B 1.60 1.4

4 B 1.65 1.5

5 C 1.70 1.6

6 C 1.75 1.7