📖 Scenario: You are working with a list of numbers representing daily sales in a small shop. You want to quickly calculate the square of each sale amount without creating a separate named function.
🎯 Goal: Learn how to use anonymous functions in R to apply a quick calculation to each item in a list.
📋 What You'll Learn
Create a numeric vector called sales with the exact values: 10, 20, 30, 40, 50
Create a variable called square_sales that uses lapply() with an anonymous function to square each number in sales
Print the square_sales variable to display the squared values
💡 Why This Matters
🌍 Real World
Anonymous functions help quickly perform small tasks like calculations or filtering without cluttering your code with many named functions.
💼 Career
Data analysts and programmers often use anonymous functions to write concise and readable code for data transformations and analysis.
Progress0 / 4 steps
1
Create the sales data
Create a numeric vector called sales with these exact values: 10, 20, 30, 40, 50
R Programming
Hint
Use the c() function to create a vector with the given numbers.
2
Prepare to square the sales
Create a variable called square_sales and set it to lapply() applied on sales with an anonymous function that takes one argument and returns its square.
R Programming
Hint
Use function(x) x^2 inside lapply() to square each element.
3
Check the type of the result
Convert square_sales from a list to a numeric vector using unlist() and store it back in square_sales.
R Programming
Hint
Use unlist() to convert the list to a vector for easier use.
4
Display the squared sales
Print the square_sales vector to show the squared sales values.
R Programming
Hint
Use print(square_sales) to display the vector.
Practice
(1/5)
1. What is an anonymous function in R?
easy
A. A function that must be saved to a variable
B. A function that always returns NULL
C. A function without a name, created on the spot
D. A function that can only be used once
Solution
Step 1: Understand the definition of anonymous functions
Anonymous functions are functions created without giving them a name, used immediately.
Step 2: Compare options with the definition
Only 'A function without a name, created on the spot' correctly describes an anonymous function.
Final Answer:
A function without a name, created on the spot -> Option C
Quick Check:
Anonymous function = unnamed function [OK]
Hint: Anonymous means no name, created instantly [OK]
Common Mistakes:
Thinking anonymous functions must be saved to variables
Believing anonymous functions always return NULL
Confusing anonymous functions with one-time use functions
2. Which of the following is the correct syntax for an anonymous function in R?
easy
A. lambda x: x + 1
B. fun(x) { return x + 1 }
C. def(x) x + 1
D. function(x) x + 1
Solution
Step 1: Recall R syntax for anonymous functions
In R, anonymous functions are written as function(arguments) expression.
Step 2: Check each option
function(x) x + 1 matches R syntax. Options B, C, and D use syntax from other languages or incorrect forms.
Final Answer:
function(x) x + 1 -> Option D
Quick Check:
R anonymous function syntax = function(args) expr [OK]
Hint: R uses 'function' keyword for anonymous functions [OK]
lapply applies the function to each element of 1:3, returning a list of results.
Step 2: Calculate each element
For x=1,2,3, function(x) x*2 returns 2,4,6 respectively, stored as list elements.
Final Answer:
[[1]] 2 [[2]] 4 [[3]] 6 -> Option A
Quick Check:
lapply returns list of doubled values [OK]
Hint: lapply returns a list, not a vector [OK]
Common Mistakes:
Expecting a vector output instead of a list
Confusing lapply with sapply output
Thinking anonymous function causes error
4. Identify the error in this R code using an anonymous function:
result <- lapply(1:3, function(x) { x + })
medium
A. Anonymous functions cannot be used inside lapply
B. Missing value after '+' operator
C. Incorrect use of curly braces
D. Variable 'result' is not defined
Solution
Step 1: Analyze the anonymous function body
The function body has 'x +', which is incomplete because '+' needs a value after it.
Step 2: Identify the syntax error
This causes a syntax error due to missing operand after '+'. Other options are incorrect because anonymous functions are valid in lapply, curly braces are correctly used, and 'result' is defined.
Final Answer:
Missing value after '+' operator -> Option B
Quick Check:
Incomplete operator usage = syntax error [OK]
Hint: Check operators have both operands [OK]
Common Mistakes:
Assuming anonymous functions can't be used in lapply
Ignoring incomplete expressions inside function
Confusing variable definition errors with syntax errors
5. How can you use an anonymous function to filter even numbers from a vector v <- 1:6 using Filter() in R?
hard
A. Filter(function(x) x %% 2 == 0, v)
B. Filter(function(x) x / 2 == 0, v)
C. Filter(function(x) x %% 2 = 0, v)
D. Filter(function(x) x == 0, v)
Solution
Step 1: Understand filtering even numbers
Even numbers have zero remainder when divided by 2, so condition is x %% 2 == 0.
Step 2: Check each option's condition
Filter(function(x) x %% 2 == 0, v) correctly uses 'x %% 2 == 0'. Filter(function(x) x / 2 == 0, v) uses division instead of modulo, Filter(function(x) x %% 2 = 0, v) uses single '=', which is assignment not comparison, and Filter(function(x) x == 0, v) checks if x equals zero only.
Final Answer:
Filter(function(x) x %% 2 == 0, v) -> Option A
Quick Check:
Modulo equals zero filters even numbers [OK]
Hint: Use '%% 2 == 0' to check even numbers [OK]
Common Mistakes:
Using single '=' instead of '==' for comparison
Using division '/' instead of modulo '%%'
Filtering for x == 0 instead of even numbers
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.