Vector arithmetic (element-wise) in R Programming - Time & Space Complexity
When we do arithmetic on vectors in R, each element is processed one by one.
We want to know how the time to finish grows as the vector gets longer.
Analyze the time complexity of the following code snippet.
x <- 1:1000
y <- 1001:2000
z <- x + y # element-wise addition
This code adds two vectors element by element to create a new vector.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Adding each pair of elements from two vectors.
- How many times: Once for each element in the vectors.
As the vector length grows, the number of additions grows the same way.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 additions |
| 100 | 100 additions |
| 1000 | 1000 additions |
Pattern observation: The work grows directly with the number of elements.
Time Complexity: O(n)
This means the time to add vectors grows in a straight line with their length.
[X] Wrong: "Adding two vectors takes the same time no matter their size."
[OK] Correct: Each element must be added, so longer vectors take more time.
Understanding how vector operations scale helps you write efficient code and explain performance clearly.
"What if we added three vectors together element-wise instead of two? How would the time complexity change?"
Practice
What happens when you add two vectors of the same length in R, like c(1, 2, 3) + c(4, 5, 6)?
Solution
Step 1: Understand element-wise addition
In R, adding two vectors of the same length adds each element from the first vector to the matching element in the second vector.Step 2: Apply addition to given vectors
Addingc(1, 2, 3)andc(4, 5, 6)results inc(1+4, 2+5, 3+6)which isc(5, 7, 9).Final Answer:
Each element in the first vector is added to the corresponding element in the second vector. -> Option CQuick Check:
Element-wise addition = Each element in the first vector is added to the corresponding element in the second vector. [OK]
- Thinking vectors concatenate instead of adding
- Assuming only first elements add
- Expecting an error for vector addition
Which of the following is the correct syntax to subtract two vectors a and b element-wise in R?
Solution
Step 1: Recall vector subtraction syntax in R
In R, element-wise subtraction of vectors uses the minus operator-directly between vectors.Step 2: Verify given options
Onlya - bis valid R syntax for element-wise subtraction. The other options are not built-in R functions or operators.Final Answer:
a - b -> Option DQuick Check:
Use-operator for vector subtraction [OK]
- Using non-existent functions like subtract()
- Trying special operators like %minus%
- Confusing subtraction with other functions
What is the output of the following R code?
v1 <- c(2, 4, 6)
v2 <- c(1, 3, 5)
result <- v1 * v2
print(result)
Solution
Step 1: Understand element-wise multiplication
In R, multiplying two vectors multiplies each element of the first vector by the corresponding element of the second vector.Step 2: Calculate each product
Multiply elements: 2*1=2, 4*3=12, 6*5=30. So the result isc(2, 12, 30).Final Answer:
[1] 2 12 30 -> Option BQuick Check:
Element-wise multiplication = [1] 2 12 30 [OK]
- Adding instead of multiplying
- Concatenating vectors instead of multiplying
- Getting sums instead of products
Consider this R code snippet:
v1 <- c(1, 2, 3)
v2 <- c(4, 5)
result <- v1 + v2
print(result)
What is the issue with this code?
Solution
Step 1: Check vector lengths
Vectorv1has length 3,v2has length 2. They differ in length.Step 2: Understand recycling in R
R recycles the shorter vector to match the longer one but gives a warning if lengths are not multiples. Here, 3 is not a multiple of 2, so a warning occurs.Final Answer:
Vectors have different lengths causing recycling warning. -> Option AQuick Check:
Unequal vector lengths cause recycling warning [OK]
- Ignoring recycling warnings
- Expecting syntax errors for length mismatch
- Assuming result is NULL when lengths differ
You have two vectors representing daily sales for two stores:store1 <- c(10, 20, 30, 40)store2 <- c(5, 15, 25, 35)
How do you calculate the total sales per day for both stores combined using vector arithmetic?
Solution
Step 1: Understand the goal
We want total sales per day, so we add sales from both stores for each day.Step 2: Use element-wise addition
Addingstore1andstore2element-wise sums daily sales:c(10+5, 20+15, 30+25, 40+35)=c(15, 35, 55, 75).Final Answer:
total_sales <- store1 + store2 -> Option AQuick Check:
Add vectors element-wise for daily totals [OK]
- Multiplying instead of adding sales
- Subtracting sales mistakenly
- Concatenating vectors instead of adding
Ready to prove it?
Pass the test and this pattern moves unknown
