Bird
Raised Fist0
R Programmingprogramming~5 mins

readRDS and saveRDS in R Programming - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: readRDS and saveRDS
O(n)
Understanding Time Complexity

When working with files in R, it's important to know how the time to read or save data changes as the data size grows.

We want to understand how the time cost grows when using readRDS and saveRDS functions.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


# Save an object to a file
saveRDS(my_data, file = "data.rds")

# Read the object back from the file
loaded_data <- readRDS("data.rds")
    

This code saves an R object to disk and then reads it back into memory.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Reading or writing each element of the object to or from disk.
  • How many times: Once for each element or data unit inside the object, depending on its size.
How Execution Grows With Input

As the size of the data object grows, the time to save or read it grows roughly in direct proportion.

Input Size (n)Approx. Operations
1010 units processed
100100 units processed
10001000 units processed

Pattern observation: Doubling the data size roughly doubles the time needed to read or save.

Final Time Complexity

Time Complexity: O(n)

This means the time to read or save grows linearly with the size of the data.

Common Mistake

[X] Wrong: "Reading or saving small files takes the same time as big files."

[OK] Correct: The time depends on how much data is processed; bigger files take more time because more data is handled.

Interview Connect

Understanding how file operations scale helps you reason about program speed and efficiency in real projects.

Self-Check

"What if we compressed the data before saving? How would the time complexity change?"

Practice

(1/5)
1. What does the saveRDS() function do in R?
easy
A. It creates a new R script file.
B. It reads data from a CSV file.
C. It saves a single R object to a file.
D. It deletes an R object from memory.

Solution

  1. Step 1: Understand the purpose of saveRDS()

    The saveRDS() function is used to save one R object to a file in a binary format.
  2. Step 2: Compare with other options

    The other options describe unrelated actions: creating a new R script file, reading data from a CSV file, or deleting an R object from memory.
  3. Final Answer:

    It saves a single R object to a file. -> Option C
  4. Quick Check:

    saveRDS() = saves object [OK]
Hint: saveRDS saves one object to a file in R [OK]
Common Mistakes:
  • Confusing saveRDS() with read.csv()
  • Thinking saveRDS() saves multiple objects at once
  • Assuming saveRDS() creates scripts
2. Which of the following is the correct syntax to save an object my_data to a file named data.rds?
easy
A. saveRDS(my_data, "data.rds")
B. saveRDS("data.rds", my_data)
C. readRDS(my_data, "data.rds")
D. save(my_data, file = "data.rds")

Solution

  1. Step 1: Recall saveRDS() argument order

    The first argument is the object to save, the second is the file name as a string.
  2. Step 2: Check each option

    saveRDS(my_data, "data.rds") matches the correct order. saveRDS("data.rds", my_data) reverses arguments. readRDS(my_data, "data.rds") uses readRDS which is for reading, not saving. save(my_data, file = "data.rds") uses save(), which is different.
  3. Final Answer:

    saveRDS(my_data, "data.rds") -> Option A
  4. Quick Check:

    saveRDS(object, file) = correct syntax [OK]
Hint: Remember: saveRDS(object, "filename") [OK]
Common Mistakes:
  • Swapping object and filename arguments
  • Using readRDS() instead of saveRDS() to save
  • Confusing saveRDS() with save()
3. What will be the output of the following R code?
my_list <- list(a = 1, b = 2)
saveRDS(my_list, "mylist.rds")
loaded_list <- readRDS("mylist.rds")
print(loaded_list$b)
medium
A. Error: object not found
B. 1
C. NULL
D. 2

Solution

  1. Step 1: Understand saving and loading

    The list my_list has elements a=1 and b=2. It is saved to a file and then loaded back into loaded_list.
  2. Step 2: Access element b of loaded_list

    Accessing loaded_list$b retrieves the value 2, as saved.
  3. Final Answer:

    2 -> Option D
  4. Quick Check:

    readRDS() loads saved object correctly [OK]
Hint: readRDS loads saved object exactly as saved [OK]
Common Mistakes:
  • Expecting print to show 1 instead of 2
  • Thinking readRDS returns NULL
  • Confusing saveRDS and readRDS usage
4. Identify the error in this R code snippet:
saveRDS(data, "datafile.rds")
new_data <- readRDS(datafile.rds)
print(new_data)
medium
A. Missing quotes around filename in readRDS()
B. Using saveRDS() instead of save()
C. Incorrect object name in saveRDS()
D. No error, code runs fine

Solution

  1. Step 1: Check readRDS() argument

    The filename must be a string, so it needs quotes around it.
  2. Step 2: Identify the error

    In readRDS(datafile.rds), the filename is unquoted, causing an error.
  3. Final Answer:

    Missing quotes around filename in readRDS() -> Option A
  4. Quick Check:

    Filename must be a string in readRDS() [OK]
Hint: Always put filename in quotes in readRDS() [OK]
Common Mistakes:
  • Forgetting quotes around filename
  • Confusing saveRDS() and save()
  • Assuming no error when filename is unquoted
5. You saved a data frame df using saveRDS(df, "df.rds"). Later, you want to load it and add a new column status with value "active" for all rows. Which code correctly does this?
hard
A. df <- saveRDS("df.rds") df$status <- "active"
B. df <- readRDS("df.rds") df$status <- "active" saveRDS(df, "df.rds")
C. readRDS(df, "df.rds") df$status <- "active"
D. df <- readRDS("df.rds") addColumn(df, status = "active")

Solution

  1. Step 1: Load the saved data frame

    Use df <- readRDS("df.rds") to load the saved object into df.
  2. Step 2: Add new column and save again

    Add the new column by df$status <- "active" and save the updated object back with saveRDS(df, "df.rds").
  3. Final Answer:

    df <- readRDS("df.rds") df$status <- "active" saveRDS(df, "df.rds") -> Option B
  4. Quick Check:

    Load, modify, then save again [OK]
Hint: Load with readRDS, modify, then saveRDS to update file [OK]
Common Mistakes:
  • Using saveRDS() to load data
  • Forgetting to save after modification
  • Using incorrect function to add column
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard