Учебники

R — двоичные файлы

Бинарный файл — это файл, который содержит информацию, хранящуюся только в виде битов и байтов (0 и 1). Они не читаются человеком, поскольку байты в нем переводятся в символы и символы, которые содержат много других непечатных символов. Попытка чтения двоичного файла с помощью любого текстового редактора покажет символы, такие как Ø и ð.

Двоичный файл должен быть прочитан определенными программами, чтобы его можно было использовать. Например, двоичный файл программы Microsoft Word может быть прочитан в удобочитаемой форме только программой Word. Это указывает на то, что, помимо читаемого человеком текста, имеется намного больше информации, такой как форматирование символов и номеров страниц и т. Д., Которые также хранятся вместе с буквенно-цифровыми символами. И, наконец, двоичный файл представляет собой непрерывную последовательность байтов. Разрыв строки, который мы видим в текстовом файле, — это символ, соединяющий первую строку со следующей.

Иногда данные, генерируемые другими программами, должны обрабатываться R как двоичный файл. Также R необходим для создания бинарных файлов, которые могут использоваться другими программами.

R имеет две функции WriteBin () и readBin () для создания и чтения двоичных файлов.

Синтаксис

writeBin(object, con)
readBin(con, what, n )

Ниже приведено описание используемых параметров:

  • con — это объект подключения для чтения или записи двоичного файла.

  • Объект — это двоичный файл, который нужно записать.

  • что такое режим, как символ, целое число и т. д., представляющие байты для чтения.

  • n — это количество байтов для чтения из двоичного файла.

con — это объект подключения для чтения или записи двоичного файла.

Объект — это двоичный файл, который нужно записать.

что такое режим, как символ, целое число и т. д., представляющие байты для чтения.

n — это количество байтов для чтения из двоичного файла.

пример

Мы считаем встроенные данные R «mtcars». Сначала мы создаем из него CSV-файл, преобразуем его в двоичный файл и сохраняем как файл ОС. Далее мы читаем этот двоичный файл, созданный в R.

Запись двоичного файла

Мы читаем фрейм данных «mtcars» как файл csv, а затем записываем его как двоичный файл в ОС.

# Read the "mtcars" data frame as a csv file and store only the columns 
   "cyl", "am" and "gear".
write.table(mtcars, file = "mtcars.csv",row.names = FALSE, na = "", 
   col.names = TRUE, sep = ",")

# Store 5 records from the csv file as a new data frame.
new.mtcars <- read.table("mtcars.csv",sep = ",",header = TRUE,nrows = 5)

# Create a connection object to write the binary file using mode "wb".
write.filename = file("/web/com/binmtcars.dat", "wb")

# Write the column names of the data frame to the connection object.
writeBin(colnames(new.mtcars), write.filename)

# Write the records in each of the column to the file.
writeBin(c(new.mtcars$cyl,new.mtcars$am,new.mtcars$gear), write.filename)

# Close the file for writing so that it can be read by other program.
close(write.filename)

Чтение двоичного файла

Созданный выше двоичный файл хранит все данные в виде непрерывных байтов. Поэтому мы будем читать его, выбирая соответствующие значения имен столбцов, а также значений столбцов.

# Create a connection object to read the file in binary mode using "rb".
read.filename <- file("/web/com/binmtcars.dat", "rb")

# First read the column names. n = 3 as we have 3 columns.
column.names <- readBin(read.filename, character(),  n = 3)

# Next read the column values. n = 18 as we have 3 column names and 15 values.
read.filename <- file("/web/com/binmtcars.dat", "rb")
bindata <- readBin(read.filename, integer(),  n = 18)

# Print the data.
print(bindata)

# Read the values from 4th byte to 8th byte which represents "cyl".
cyldata = bindata[4:8]
print(cyldata)

# Read the values form 9th byte to 13th byte which represents "am".
amdata = bindata[9:13]
print(amdata)

# Read the values form 9th byte to 13th byte which represents "gear".
geardata = bindata[14:18]
print(geardata)

# Combine all the read values to a dat frame.
finaldata = cbind(cyldata, amdata, geardata)
colnames(finaldata) = column.names
print(finaldata)

Когда мы выполняем приведенный выше код, он дает следующий результат и диаграмму —

 [1]    7108963 1728081249    7496037          6          6          4
 [7]          6          8          1          1          1          0
[13]          0          4          4          4          3          3

[1] 6 6 4 6 8

[1] 1 1 1 0 0

[1] 4 4 4 3 3

     cyl am gear
[1,]   6  1    4
[2,]   6  1    4
[3,]   4  1    4
[4,]   6  0    3
[5,]   8  0    3

Как мы видим, мы получили исходные данные, прочитав двоичный файл в R.