Bird
Raised Fist0
R Programmingprogramming~5 mins

Named vectors in R Programming - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Named vectors
O(n)
Understanding Time Complexity

We want to understand how the time it takes to work with named vectors changes as the vector gets bigger.

Specifically, how does looking up or accessing elements by name affect the time?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

  
# Create a named vector
vec <- c(a=10, b=20, c=30, d=40, e=50)

# Access element by name
value <- vec["c"]

# Access multiple elements by names
values <- vec[c("a", "e")]

# Add a new named element
vec["f"] <- 60

This code creates a named vector, accesses elements by their names, and adds a new named element.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Searching for names in the vector's name list to find matching elements.
  • How many times: Once per element accessed by name; if multiple names are accessed, the search repeats for each.
How Execution Grows With Input

When the vector is small, finding a name is quick. As the vector grows, searching through names takes longer.

Input Size (n)Approx. Operations
10About 10 checks to find a name
100About 100 checks to find a name
1000About 1000 checks to find a name

Pattern observation: The time to find a name grows roughly in direct proportion to the vector size.

Final Time Complexity

Time Complexity: O(n)

This means the time to find an element by name grows linearly with the number of elements in the vector.

Common Mistake

[X] Wrong: "Accessing elements by name is instant no matter how big the vector is."

[OK] Correct: The program must look through the names to find a match, so bigger vectors take more time.

Interview Connect

Understanding how named vectors work helps you reason about data lookup speed, a key skill in many programming tasks.

Self-Check

"What if we changed the vector to a named list instead? How would the time complexity for accessing elements by name change?"

Practice

(1/5)
1. What is a named vector in R?
easy
A. A vector that only contains numeric values
B. A vector where each element has a name label for easy access
C. A vector that cannot be modified after creation
D. A vector that stores only character strings

Solution

  1. Step 1: Understand vector naming

    Named vectors have names assigned to each element, making it easier to access elements by name.
  2. Step 2: Compare options

    Only A vector where each element has a name label for easy access correctly describes a named vector as having name labels for elements.
  3. Final Answer:

    A vector where each element has a name label for easy access -> Option B
  4. Quick Check:

    Named vector = vector with names [OK]
Hint: Named vectors have labels for elements, not just values [OK]
Common Mistakes:
  • Thinking named vectors only hold numbers
  • Confusing named vectors with immutable vectors
  • Assuming named vectors store only strings
2. Which of the following is the correct way to create a named vector in R?
easy
A. c(apple = 5, banana = 3, cherry = 7)
B. vector(apple:5, banana:3, cherry:7)
C. named_vector(5, 3, 7, names = c('apple', 'banana', 'cherry'))
D. c(5 = apple, 3 = banana, 7 = cherry)

Solution

  1. Step 1: Recall named vector syntax

    Named vectors are created using c(name = value) pairs.
  2. Step 2: Check each option

    c(apple = 5, banana = 3, cherry = 7) uses correct syntax: c(apple = 5, banana = 3, cherry = 7). Others use invalid syntax or functions.
  3. Final Answer:

    c(apple = 5, banana = 3, cherry = 7) -> Option A
  4. Quick Check:

    Use c(name = value) to create named vectors [OK]
Hint: Use c(name = value) pairs to create named vectors [OK]
Common Mistakes:
  • Using colons instead of equals for naming
  • Trying to use non-existent functions like named_vector()
  • Placing values before names incorrectly
3. What will be the output of the following R code?
fruits <- c(apple = 10, banana = 5, cherry = 8)
fruits["banana"]
medium
A. 5
B. "banana"
C. Error: object not found
D. c(banana = 5)

Solution

  1. Step 1: Understand named vector indexing

    Accessing a named vector element by name returns a named vector of length 1 with that element.
  2. Step 2: Analyze the code output

    fruits["banana"] returns a named vector with name 'banana' and value 5, shown as c(banana = 5).
  3. Final Answer:

    c(banana = 5) -> Option D
  4. Quick Check:

    Access by name returns named vector element [OK]
Hint: Accessing by name returns named vector element, not just value [OK]
Common Mistakes:
  • Expecting just the value without name
  • Confusing output with string name
  • Assuming it causes an error
4. Identify the error in the following R code that tries to create a named vector:
numbers <- c(1 = "one", 2 = "two", 3 = "three")
medium
A. Values and names are reversed; names should be strings on the left
B. The syntax uses numbers as names incorrectly; names must be on the left side
C. Numbers cannot be used as names in named vectors
D. The c() function cannot create named vectors

Solution

  1. Step 1: Check named vector syntax

    Named vectors use name = value pairs, with names on the left and values on the right.
  2. Step 2: Analyze the code

    The code uses numbers on the left and strings on the right, which reverses the expected order.
  3. Final Answer:

    Values and names are reversed; names should be strings on the left -> Option A
  4. Quick Check:

    Names = values, not values = names [OK]
Hint: Names must be on left side, values on right in c(name = value) [OK]
Common Mistakes:
  • Putting values on left and names on right
  • Thinking numbers cannot be names (they can as strings)
  • Believing c() can't create named vectors
5. Given the named vector temps <- c(Mon = 22, Tue = 25, Wed = 20, Thu = 23), how would you create a new named vector with only days where temperature is above 22?
hard
A. temps[">22"]
B. temps[temps < 22]
C. temps[temps > 22]
D. temps[temps == 22]

Solution

  1. Step 1: Understand logical indexing with named vectors

    You can use a logical condition inside square brackets to filter elements.
  2. Step 2: Apply condition temps > 22

    temps > 22 returns TRUE for days with temperature above 22, so temps[temps > 22] selects those days.
  3. Final Answer:

    temps[temps > 22] -> Option C
  4. Quick Check:

    Use logical condition inside brackets to filter named vectors [OK]
Hint: Use temps[temps > value] to filter named vectors by condition [OK]
Common Mistakes:
  • Using incorrect comparison operators
  • Trying to index by string '>22' which is invalid
  • Selecting equal or less than values instead of greater
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