Sorting a List of Fruits by Price Using order() in R
📖 Scenario: You run a small fruit shop and keep a list of fruits with their prices. You want to sort the fruits by their prices to decide which ones to promote.
🎯 Goal: Learn how to use the order() function in R to sort a list of fruits by their prices in ascending order.
📋 What You'll Learn
Create a vector called fruits with the values "apple", "banana", "cherry", "date", "elderberry"
Create a numeric vector called prices with the values 3.5, 2.0, 4.0, 5.5, 1.5
Create a variable called sorted_indices using the order() function on prices
Use sorted_indices to create a new vector called sorted_fruits that sorts fruits by price
Print the sorted_fruits vector
💡 Why This Matters
🌍 Real World
Sorting items by price helps shop owners decide which products to promote or discount.
💼 Career
Understanding sorting techniques is essential for data analysis and organizing information efficiently in many jobs.
Progress0 / 4 steps
1
Create the fruits and prices vectors
Create a vector called fruits with the values "apple", "banana", "cherry", "date", "elderberry". Then create a numeric vector called prices with the values 3.5, 2.0, 4.0, 5.5, 1.5.
R Programming
Hint
Use the c() function to create vectors in R.
2
Create sorted indices using order()
Create a variable called sorted_indices by using the order() function on the prices vector.
R Programming
Hint
The order() function returns the positions that would sort the vector.
3
Sort fruits using sorted indices
Create a new vector called sorted_fruits by using sorted_indices to reorder the fruits vector.
R Programming
Hint
Use square brackets [] to reorder a vector by indices.
4
Print the sorted fruits
Print the sorted_fruits vector to display the fruits sorted by price.
R Programming
Hint
Use the print() function to show the vector.
Practice
(1/5)
1. What does the order() function in R do?
easy
A. Sorts the vector and returns the sorted values directly
B. Removes duplicates from a vector
C. Returns the indices that would sort a vector in ascending order
D. Calculates the sum of all elements in a vector
Solution
Step 1: Understand the purpose of order()
The order() function returns the positions (indices) that would sort the vector, not the sorted vector itself.
Step 2: Differentiate from sort()
Unlike sort(), which returns sorted values, order() returns the order of indices to rearrange the vector.
Final Answer:
Returns the indices that would sort a vector in ascending order -> Option C
Hint: Index vector with order() for sorting, add decreasing=TRUE for reverse [OK]
Common Mistakes:
Using order() without indexing the vector
Trying to sort order() output directly
Using sort() on order() output incorrectly
3. What is the output of the following R code?
v <- c(4, 2, 9, 7)
v[order(v)]
medium
A. [1] 2 4 7 9
B. [1] 4 2 9 7
C. [1] 9 7 4 2
D. [1] 2 7 4 9
Solution
Step 1: Calculate order(v)
For v = c(4, 2, 9, 7), order(v) returns indices that sort v: positions of values in ascending order are 2 (2), 1 (4), 4 (7), 3 (9).
Step 2: Index v with order(v)
Using these indices: v[c(2,1,4,3)] gives 2 4 7 9.
Final Answer:
[1] 2 4 7 9 -> Option A
Quick Check:
v[order(v)] = sorted vector ascending [OK]
Hint: order() gives indices to sort; index vector to get sorted values [OK]
Common Mistakes:
Expecting order() to return sorted values directly
Mixing up indices and values
Incorrect indexing order
4. Identify the error in the following R code snippet:
v <- c(5, 3, 8, 1)
sorted_v <- order(v)
print(sorted_v)
medium
A. order() returns indices, not sorted values; should index v with order(v)
B. Missing parentheses in order function call
C. Vector v is not defined before order()
D. print() cannot display vectors
Solution
Step 1: Understand what order() returns
order(v) returns the indices that would sort v, not the sorted vector itself.
Step 2: Correct usage to get sorted vector
To get sorted values, use v[order(v)]. The code assigns indices to sorted_v, so printing it shows positions, not sorted values.
Final Answer:
order() returns indices, not sorted values; should index v with order(v) -> Option A
Quick Check:
order() = indices, index vector to sort [OK]
Hint: Use v[order(v)] to get sorted vector, not order(v) alone [OK]
Common Mistakes:
Expecting order() to return sorted vector
Printing order() output directly
Confusing order() with sort()
5. Given two related vectors names <- c("Anna", "Bob", "Cara") and scores <- c(88, 95, 90), how do you sort names by scores in descending order using order()?
hard
A. order(names, decreasing = TRUE)[scores]
B. names[order(scores, decreasing = TRUE)]
C. scores[order(names, decreasing = TRUE)]
D. sort(names, by = scores, decreasing = TRUE)
Solution
Step 1: Use order() on scores with decreasing = TRUE
To sort names by scores descending, get indices with order(scores, decreasing = TRUE).
Step 2: Index names with these order indices
Use these indices to reorder names: names[order(scores, decreasing = TRUE)].
Final Answer:
names[order(scores, decreasing = TRUE)] -> Option B
Quick Check:
Index names by order(scores, decreasing=TRUE) [OK]
Hint: Sort related vectors by ordering one, index the other [OK]
Common Mistakes:
Trying to sort names directly by scores without order()
Using sort() with non-existent 'by' argument
Mixing order() arguments or indexing incorrectly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.