Working with Binary Files in R Programming

In the computer science world, text files contain data that can easily be understood by humans. It includes letters, numbers, and other characters. On the other hand, binary files contain 1s and 0s that only computers can interpret. The information stored in a binary file can’t be read by humans as the bytes in it translate to characters and symbols that contain various other non-printable characters.

It may happen some times when the data produced by other programs are essential to be processed by the R language as a binary file. Furthermore, R is necessarily responsible for creating binary files that can be shared with other programs. The four most important operations that can be performed in a binary file are:

  • Creating and writing to a binary file
  • Reading from the binary file
  • Append to the binary file
  • Deleting the binary file

Creating and writing to a binary file

The both creating and writing to a binary file can be performed by a single function writeBin() by opening the file in “wb” mode where w indicates write and b indicates binary mode.

Syntax: writeBin(object, con)

Parameters:
object: an R object to be written to the connection
con: a connection object or a character string naming a file or a raw vector.



Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

# R program to illustrate 
# working with binary file
  
# Creating a data frame
df = data.frame(
  "ID" = c(1, 2, 3, 4),
  "Name" = c("Tony", "Thor", "Loki", "Hulk"),
  "Age" = c(20, 34, 24, 40),
  "Pin" = c(756083, 756001, 751003, 110011)
)
  
# Creating a connection object
# to write the binary file using mode "wb"
con = file("myfile.dat", "wb")
  
# Write the column names of the data frame
# to the connection object
writeBin(colnames(df), con)
  
# Write the records in each of the columns to the file
writeBin(c(df$ID, df$Name, df$Age, df$Pin), con)
  
# Close the connection object
close(con)

chevron_right


Output:

Reading from the binary file

Reading from the binary file can be performed by a the function readBin() by opening the file in “rb” mode where r indicates read and b indicates binary mode.

Syntax: readBin(con, what, n )

Parameters:
con: a connection object or a character string naming a file or a raw vector
what: either an object whose mode will give the mode of the vector to be read or a character vector of length one describing the mode: one of “numeric”, “double”, “integer”, “int”, “logical”, “complex”, “character”, “raw”
n: the (maximal) number of records to be read

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

# R program to illustrate 
# working with binary file
  
# Creating a connection object 
# to read the file in binary mode using "rb".
con = file("myfile.dat", "rb")
  
# Read the column names
# n = 4 as here 4 column
colname = readBin(con, character(),  n = 4)
  
# Read column values
# n = 20 as here 16 values and 4 column names
con = file("myfile.dat", "rb")
bindata = readBin(con, integer(), n = 20)
  
# Read the ID values
# as first 1:4 byte for col name
# then values of ID col is within 5 to 8
ID = bindata[5:8]
  
# Similarly 9 to 12 byte for values of name column
Name = bindata[9:12]
  
# 13 to 16 byte for values of the age column
Age = bindata[13:16]
  
# 17 to 20 byte for values of Pincode column
PinCode = bindata[17:20]
  
# Combining all the values and make it a data frame
finaldata = cbind(ID, Name, Age, PinCode)
colnames(finaldata)= colname
print(finaldata)

chevron_right


Output:

             ID       Name        Age        Pin
[1, ]          0          0          0          0
[2, ] 1072693248 1074266112 1074790400 1073741824
[3, ]          0          0          0          0
[4, ] 1073741824 1074790400 1074266112 1072693248

Append to the binary file

Append to the binary file can be performed by a the same function writeBin() by opening the file in “ab” mode where a indicates append and b indicates binary mode.

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

# R program to illustrate 
# working with binary file
  
# Creating another data frame
# to append with the existing data frame
df = data.frame(
  "Salary" = c(100, 200, 300, 400),
  "Experience" = c(3, 5, 10, 4)
)
  
# Creating a connection objec
# to append the binary file using mode "ab"
con = file("myfile.dat", "ab")
  
# append the column names of the data frame
# to the connection object
writeBin(colnames(df), con)
  
# append the records in each of the columns to the file
writeBin(df$Salary, con)
  
# Close the connection object
close(con)

chevron_right


Output:

Delete the binary file

In R, one can delete the binary file by using file.remove() command and then unlink the deleted file by using unlink() function.

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

# R program to illustrate 
# working with binary file
  
# Define the file name that will be deleted
fileName <- "myfile.dat"
  
# Check its existence
if (file.exists(fileName)) 
  # Delete file if it exists
  file.remove(fileName)
  
# Unlink the deleted file
unlink(fileName, recursive = TRUE)

chevron_right





My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.