When it comes to working with data in R, understanding data types is fundamental. Just like in real life, where you have different types of objects like numbers, words, and lists, R also categorizes data into various types. These data types help R understand how to handle and manipulate your data.
There are numerous data types in R programming language, including integer, string, and more. Based on the variable’s data type, the operating system allows memory and determines what can be kept in the reserved memory. This article will discuss all the data types in R Programming Language so keep reading the blog.
In R, data types represent the kind of data that can be stored and manipulated. Common data types include numeric (for numbers), character (for text), logical (for true/false values), and factors (for categorical data). R also supports more specialized types like lists and data frames for structured data storage. These data types help organize and work with diverse data in R programming.

There are the following data types which are used in R programming:
For numerical values, there is the numeric data type. It is a standard data type in r programming for numbers.
The following are some examples of numerical values: 2, 25.4, -45.253, 48.02, etc.
Decimal values are called Numerics in R. It is the default computational data type. If we assign a decimal value to a variable x as follows, x will be of numeric type.
Examples of Numeric Data Type:
(i)
x <- 10.5 # Assigning A Decimal Value
print(x) # Print the Value Of x
[1] 10.5 #Output
print(class(x)) # Print the class name of x
[1] “numeric” #Output
(ii)
num <- -250 #Assigning a negative numeric value
print(class(num)) #Print the class of num, Output = “numeric”
print(typeof(num)) #Print the type of num, Output = “double”
(iii)
x <- 42.5 # Numeric (floating-point number)
y <- 100 # Numeric (integer stored as numeric)
print(x) #Print the value of x , Output = 42.5
print(y) #Print the value of y, Output = 100
Even though num is an integer-like value, R assigns it as a “numeric” class and a “double” type because numeric values in R are stored as floating-point numbers by default.
Daily Life Example: Think of a numeric value as the amount on a restaurant bill or the temperature recorded in degrees. Numeric types are used whenever you’re working with numbers that can have decimal points.
Imagine you’re managing the finances for a small business. You need to keep track of your daily expenses, and one day, you record a negative balance because of a refund to a customer.
expense <- -250 # Recording a negative expense due to a refund print(expense) # Print the recorded expense
Output:
[1] -250
print(class(expense)) # Print the class of expense
Output:
[1] “numeric”
print(typeof(expense)) # Print the type of expense
Output:
[1] “double”
Explanation: In this scenario, you’re tracking expenses, and a refund (negative amount) is represented as a numeric value. Although it’s an integer-like number, R stores it as a “numeric” class and “double” type, allowing it to handle decimal or fractional values if necessary (like taxes or interest calculations). This flexibility is useful for financial calculations.
The Integer data type represents integer values. We must specify a value as an integer to store it as one. The integer data type is frequently employed for discrete- only values like unique IDs. The as.integer() function allows us to store and convert a value into an integer type.
In R, integers are a specific type of numeric data used to represent whole numbers. While the numeric data type is the default for all numbers (whether integer or decimal), integers can be explicitly defined by appending an “L” to the value. For example, 5L represents an integer, whereas 5 is stored as numeric (double).
The following are some examples of integer values: 5L, 100L, -45L, 0L, etc.
Examples of Integer Data Types:
x <- 10L # Assigning an integer value using L
print(x) # Print the value of x
Output
[1] 10
print(class(x)) # Print the class of x
Output
[1] “integer”
(ii)
a <- 5L # Assigning an integer value
b <- 3L # Assigning another integer value
result <- a + b # Integer arithmetic (addition)
print(result) # Print the result
Output:
[1] 8
print(class(result)) # Print the class of result
Output:
[1] “integer”
(iii) We can also declare an integer by appending an L suffix.
y = 3L
is.integer(y) # is y an integer?
Output:
[1] TRUE
Daily Life Example: Counting Items in a Store
Integers are ideal for representing things that cannot be divided into parts. For instance, the number of items in a shopping cart or the number of employees in a company must be whole numbers (integers).
Scenario: Counting Items in a Warehouse
Imagine you are managing a warehouse and need to track the stock count of different items. The number of items must be a whole number because you cannot have half of a product in stock.
stock_count <- 150L # Recording stock count as an integer
print(stock_count) # Print the stock count
Output:
[1] 150
print(class(stock_count)) # Print the class of stock_count
Output:
[1] “integer”
print(typeof(stock_count)) # Print the type of stock_count
Output:
[1] “integer”
Explanation: In this scenario, you need to ensure that the stock count is always a whole number. Since fractional products are not possible, using an integer data type ensures that the count is accurate and appropriate for this kind of data.
Numeric is the default type for numbers, and it can store both integers and decimal values. Integer, on the other hand, is specifically for whole numbers and requires explicit definition using L.

Multiline Comments
Unlike other programming languages, such as Java, there are no syntax in R for multiline comments. However, we can just insert a # for each line to create multiline comments
Logical Data Types
Logical data types in R programming accept either a true or false value. It is common to compare two variables to arrive at a logical value.
In R, the logical data type is used to represent boolean values, which can either be TRUE or FALSE. Logical data types are fundamental for conditions, comparisons, and controlling the flow of programs.
Characteristics of Logical Data Type in R:
Examples of Logical Values in R:
(i) Assigning Logical Values
is_valid <- TRUE # Assigning TRUE to is_valid
print(is_valid)
# Output: TRUE
print(class(is_valid))
# Output: “logical”
Explanation:
(ii) Using Logical in Comparisons
x <- 10
y <- 20
result <- x < y # Comparing if x is less than y
print(result) # Output: TRUE
print(class(result)) # Output: “logical”
Explanation:
(iii) Logical with Numeric Operations
logical_sum <- TRUE + 5 # TRUE is treated as 1
logical_diff <- FALSE + 10 # FALSE is treated as 0
print(logical_sum) # Output: 6
print(logical_diff) # Output: 10
Explanation:
Imagine you’re managing student grades and need to determine if each student has passed or failed based on their score.
In R, you can use logical data types to perform this check. Logical values in R are TRUE or FALSE.
Scenario
You have a list of students with their scores, and the passing mark is 50. You want to create a logical vector indicating whether each student has passed.
Data
students_scores <- c(45, 67, 82, 49, 55)
students_scores <- c(45, 67, 82, 49, 55)
You can create a logical vector to check if each student has passed:
passing_mark <- 50
passed <- students_scores >= passing_mark
Output
FALSE TRUE TRUE FALSE TRUE
Here, the logical vector passed tells you whether each corresponding score in students_scores meets or exceeds the passing mark. In this case:
You can then use this logical vector to perform further actions, like calculating the percentage of students who passed, or filtering out the students who failed.
Complex data types in r programming are used to hold numbers that have fictitious ` components. Complex values include things like 2+3i, 1i, 5-4i, etc.
A complex value in R is defined as the pure imaginary value i.
For Example: Z=1+2i, t=7+3i
Complex data types in R are more advanced structures that allow for the storage and manipulation of more complex data. They are essential for handling diverse datasets and performing sophisticated operations. Here’s an overview of the key complex data types:
Scenario: Storing Daily Temperatures
Imagine you’re tracking the daily high temperatures over a week. You can use a vector to hold these temperatures.
Example:
# Daily high temperatures for a week
daily_temperatures <- c(72, 75, 78, 79, 74, 70, 68)
Explanation:
Scenario: Weekly Sales Data
Consider a store that tracks sales data for each day of the week and each product category. A matrix can represent this data.
Example:
# Sales data: Rows represent days, columns represent product categories sales_data <- matrix(c(200, 150, 100, 220, 180, 110, 210, 190, 140, 105, 230, 175, 115, 215), nrow = 2, byrow = TRUE)
Explanation:
Scenario: Inventory Tracking
Imagine a warehouse that stores multiple types of items across different locations and times. An array can keep track of this information.
Example:
# Inventory levels: Dimensions are (locations, items, times)
inventory_levels <- array(c(50, 60, 55, 45, 65, 70, 40, 50, 45, 35, 55, 60),
dim = c(2, 3, 2))
Explanation:
Scenario: Personal Information
Consider you want to store different pieces of personal information (name, age, hobbies) about individuals. A list can hold various types of data.
Example:
# Personal information
person_info <- list(name = “Alice”, age = 30, hobbies = c(“Reading”, “Hiking”))
Explanation:
person_info can store different types of data (character, numeric, vector) in one structure.
Scenario: Contact List
Imagine you maintain a contact list with names, phone numbers, and email
addresses. A data frame is ideal for organizing this information in a tabular format.
Example:
# Contact list contacts <- data.frame( Name = c(“Roshan”, “Chalsee”, “Meritshot”), Phone = c(“555-1234”, “555-5678”, “555-8765”), Email = c(“roshan@example.com“, “chalsee@example.com“, “meritshot@example.com“) )
Explanation:
1. Factors
Consider you conduct a survey where respondents rate their satisfaction on a scale of “Low”, “Medium”, and “High”. Factors help to handle categorical responses.
Example:
# Survey satisfaction ratings
satisfaction_ratings <- factor(c(“Medium”, “High”, “Low”, “Medium”, “High”))
Explanation:
satisfaction_ratings categorizes responses into predefined levels: Low, Medium, High.
num_vector <- c(1.1, 2.2, 3.3)
print(num_vector) # Output: 1.1 2.2 3.3
print(class(num_vector)) # Output: “numeric”
Creating Character Vectors
char_vector <- c(“apple”, “banana”, “cherry”)
print(char_vector) # Output: “apple” “banana” “cherry”
print(class(char_vector)) # Output: “character”
Explanation:
These examples provide a general understanding of complex data types and how they can be used in various scenarios.
Character data types in r programming are used to hold strings or character values. They are essential for handling strings, which can include names, descriptions, or any other textual information.
A character object is used to represent string values in R. We convert objects into character values with the as.character() function.
# Creating a character object
char <- “Roshan Sharma”
print(class(char))
print(typeof(char))
Output
[1] “character”
[1]”character”
-> Converting Other Data Types to Character
Scenario: Converting a Numeric ID to a Character String
When you need to convert a numeric ID to text.
# Converting numeric ID to character .
id <- 12345
char_id <- as.character(id)
print(char_id) # Output: “12345”
print(class(char_id)) # Output: “character”
Explanation:
# Two character values can be concatenated with the paste function.
# Define the first and last names
fname <- “Roshan”
lname <- “Sharma”
# Combine the names using paste
full_name <- paste(fname, lname)
# Print the full name
print(full_name) # Output: “Roshan Sharma””
Raw- Data Types
In R, the raw data type is used to represent raw bytes of data, which is useful for handling binary data. Unlike other data types in R, which represent data in a more human-readable form, the raw type is specifically designed to work with raw binary data.
Characteristics of raw Data Type:
1. Binary Representation:
2. Hexadecimal Format:
3. Use Cases:
# Creating raw data
raw_data <- as.raw(c(0x41, 0x42, 0x43)) # Represents “ABC” in hexadecimal
print(raw_data) # Output: [1] 41 42 43
Explanation:
# Reading a binary file as raw data
file_path <- “example.bin” # Replace with your file path
raw_data <- readBin(file_path, what = “raw”, n = file.info(file_path)$size) print(raw_data)
Explanation:
readBin() reads binary data from a file into a raw vector. The what = “raw” argument specifies that the data should be read as raw bytes.
The raw data type is essential for working with low-level binary data in R. It allows you to handle and manipulate data at the byte level, which is useful for tasks such as binary file processing and network communication.
