📖 Scenario: Imagine you are a data analyst working with a list of sales numbers. You want to understand which sales are above a certain target and calculate some statistics. Using R's advanced features like vectorized operations and functions can help you do this quickly and clearly.
🎯 Goal: You will create a vector of sales numbers, set a target value, use R's vectorized features to find sales above the target, and then print the count of those sales.
📋 What You'll Learn
Create a numeric vector called sales with these exact values: 120, 85, 90, 150, 200, 75
Create a numeric variable called target and set it to 100
Use R's vectorized comparison to create a logical vector above_target that is TRUE where sales are greater than target
Print the number of sales above the target using sum(above_target)
💡 Why This Matters
🌍 Real World
Data analysts often need to quickly find and summarize data points that meet certain conditions, like sales above a target.
💼 Career
Using vectorized operations and logical indexing in R is a key skill for data scientists and analysts to write efficient and readable code.
Progress0 / 4 steps
1
Create the sales vector
Create a numeric vector called sales with these exact values: 120, 85, 90, 150, 200, 75
R Programming
Hint
Use the c() function to combine numbers into a vector.
2
Set the target value
Create a numeric variable called target and set it to 100
R Programming
Hint
Assign the number 100 to the variable target using <-.
3
Find sales above the target
Use R's vectorized comparison to create a logical vector called above_target that is TRUE where sales are greater than target
R Programming
Hint
Use the > operator to compare each element of sales to target.
4
Print the count of sales above target
Print the number of sales above the target using print(sum(above_target))
R Programming
Hint
Use sum() to count TRUE values in above_target, then print the result.
Practice
(1/5)
1. Why do advanced features in R help programmers handle complex tasks more easily?
easy
A. They only work with simple data types like numbers.
B. They allow writing shorter and clearer code to solve bigger problems.
C. They remove the need to learn basic programming concepts.
D. They make the computer run slower but with more details.
Solution
Step 1: Understand the role of advanced features
Advanced features help by simplifying complex tasks into manageable code blocks.
Step 2: Connect code clarity with problem solving
Shorter and clearer code means programmers can solve bigger problems more easily and with less chance of errors.
Final Answer:
They allow writing shorter and clearer code to solve bigger problems. -> Option B
Quick Check:
Shorter clearer code solves bigger problems [OK]
Hint: Advanced features simplify big problems with less code [OK]
Common Mistakes:
Thinking advanced features slow down the computer
Believing basics are not needed anymore
Assuming advanced features only work with simple data
2. Which of the following is the correct syntax to create a named list in R using advanced features?
easy
A. my_list <- c(name = "Alice", age = 30)
B. my_list = {name: "Alice", age: 30}
C. my_list <- ["name" = "Alice", "age" = 30]
D. my_list <- list(name = "Alice", age = 30)
Solution
Step 1: Recall R syntax for named lists
In R, named lists are created with the list() function and named elements using =.
Step 2: Check each option's syntax
my_list <- list(name = "Alice", age = 30) uses list() with correct naming; others use invalid syntax for R.
Final Answer:
my_list <- list(name = "Alice", age = 30) -> Option D
Quick Check:
list() with name = value creates named lists [OK]
Hint: Use list() with name = value for named lists in R [OK]
Common Mistakes:
Using curly braces {} instead of list()
Using c() which creates vectors, not lists
Using square brackets [] which are invalid here
3. What is the output of this R code using an advanced feature (list comprehension with lapply)?
lapply applies the function to each element: 1^2=1, 2^2=4, 3^2=9, returning a list.
Step 2: Use unlist to convert list to vector
unlist(squares) converts the list of squared numbers to a numeric vector: 1, 4, 9.
Final Answer:
[1] 1 4 9 -> Option C
Quick Check:
Squares of 1,2,3 = 1,4,9 [OK]
Hint: lapply + unlist returns vector of function results [OK]
Common Mistakes:
Confusing lapply with sapply output
Expecting original numbers instead of squares
Missing unlist to flatten the list
4. Identify the error in this R code using advanced features and fix it:
data <- list(a = 1, b = 2, c = 3)
result <- sapply(data, function(x) x + 1
print(result)
medium
A. Missing closing parenthesis in sapply function call
B. Using sapply instead of lapply causes error
C. data should be a vector, not a list
D. print() cannot display lists
Solution
Step 1: Check syntax of sapply call
The function call to sapply is missing a closing parenthesis after the anonymous function.
Step 2: Fix the missing parenthesis
Adding the missing ')' after function(x) x + 1 fixes the syntax error and allows print(result) to work.
Final Answer:
Missing closing parenthesis in sapply function call -> Option A
Quick Check:
Syntax errors often come from missing parentheses [OK]
Hint: Count parentheses carefully in function calls [OK]
Common Mistakes:
Assuming sapply causes error instead of syntax
Thinking data type is wrong
Believing print() can't show lists
5. You want to create a named vector in R where names are letters and values are their ASCII codes, but only for vowels. Which advanced feature helps you do this efficiently?
letters <- c('a','b','c','d','e','f','g','i','o','u')
# Fill in the blank to create named vector of vowels with ASCII codes
vowels_ascii <- ???
hard
A. setNames(as.integer(charToRaw(letters)), letters)[letters %in% c('a','e','i','o','u')]
B. names(letters) <- as.integer(charToRaw(letters)); letters
C. letters[letters %in% c('a','e','i','o','u')] <- as.integer(charToRaw(letters))
D. as.integer(charToRaw(letters[letters %in% c('a','e','i','o','u')]))
Solution
Step 1: Convert letters to ASCII codes
charToRaw converts characters to raw bytes; as.integer converts raw to ASCII numbers.
Step 2: Use setNames to assign names and filter vowels
setNames assigns letter names to ASCII codes, then indexing with %in% selects vowels only.
Final Answer:
setNames(as.integer(charToRaw(letters)), letters)[letters %in% c('a','e','i','o','u')] -> Option A
Quick Check:
setNames + filtering vowels [OK]
Hint: Use setNames() with filtering for named vectors [OK]
Common Mistakes:
Assigning names incorrectly
Replacing letters vector values instead of creating new
Not filtering vowels before conversion
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.