📖 Scenario: You are working on a small R script that calculates the average of a list of numbers. Sometimes, the script gives unexpected results or errors. To fix this, you want to learn how to use basic debugging tools in R.
🎯 Goal: Learn how to use simple debugging tools in R like print() statements and the browser() function to find and fix errors in your code.
📋 What You'll Learn
Create a numeric vector called numbers with specific values
Create a variable called threshold to use in a condition
Write a for loop to calculate the sum of numbers greater than the threshold
Use print() and browser() to debug the loop
Print the final sum
💡 Why This Matters
🌍 Real World
Debugging is a key skill when writing any program. Using print statements and breakpoints helps find where things go wrong.
💼 Career
Many programming jobs require you to debug code efficiently. Knowing how to pause and inspect your program helps fix bugs faster.
Progress0 / 4 steps
1
Create the data vector
Create a numeric vector called numbers with these exact values: 5, 12, 7, 20, 3.
R Programming
Hint
Use the c() function to create a vector with the given numbers.
2
Set the threshold value
Create a variable called threshold and set it to the number 10.
R Programming
Hint
Just assign the number 10 to the variable threshold.
3
Calculate sum with debugging
Write a for loop using the variable num to go through each element in numbers. Inside the loop, use print(num) to show the current number, then use if to check if num is greater than threshold. If yes, add num to a variable called total. Use browser() inside the if block to pause execution for debugging. Initialize total to 0 before the loop.
R Programming
Hint
Remember to initialize total before the loop. Use for (num in numbers) to loop. Use print(num) to see each number. Use browser() inside the if block to pause.
4
Print the final sum
Write a print() statement to display the value of total after the loop.
R Programming
Hint
Use print(total) to show the final sum.
Practice
(1/5)
1. Which R function allows you to step through a function line-by-line to find errors?
easy
A. traceback()
B. debug()
C. browser()
D. stop()
Solution
Step 1: Understand the purpose of debug()
The debug() function lets you step through a function line-by-line to see what happens inside.
Step 2: Compare with other functions
traceback() shows the call stack after an error, browser() pauses execution but debug() is designed for stepping through.
Final Answer:
debug() -> Option B
Quick Check:
Step through function = debug() [OK]
Hint: Use debug() to step through function code line-by-line [OK]
Common Mistakes:
Confusing traceback() with stepping through code
Thinking browser() automatically steps through all lines
Using stop() which just halts execution
2. Which of the following is the correct way to start debugging a function named myFunc in R?
easy
A. debug myFunc()
B. debug:myFunc()
C. debug->myFunc()
D. debug(myFunc)
Solution
Step 1: Recall correct debug() syntax
The debug() function is called with the function name as an argument: debug(myFunc).
Step 2: Identify invalid syntax
Options A, B, and D use invalid R syntax for function calls or operators.
Final Answer:
debug(myFunc) -> Option D
Quick Check:
Correct debug syntax = debug(myFunc) [OK]
Hint: Use parentheses with debug() and function name [OK]
Common Mistakes:
Omitting parentheses after debug
Using colon or arrow instead of parentheses
Adding spaces incorrectly in function call
3. What will be the output after running this R code?
f <- function(x) {
debug()
y <- x + 1
return(y)
}
f(3)
medium
A. Starts debugging mode and waits for user input
B. Returns 4 immediately without debugging
C. Throws an error because debug() needs a function name
D. Prints 3 and exits
Solution
Step 1: Understand debug() usage
debug() is used with a function name outside the function, not inside it.
Step 2: Analyze code behavior
Calling debug() inside a function without arguments causes an error because debug expects a function name.
Final Answer:
Throws an error because debug() needs a function name -> Option C
Quick Check:
debug() inside function without name = error [OK]
Hint: debug() needs a function name, not called inside function body [OK]
Common Mistakes:
Thinking debug() works inside function without arguments
Expecting immediate return without debugging
Confusing debug() with browser()
4. You run a function and get an error. Which R command helps you see the sequence of function calls that led to the error?
medium
A. traceback()
B. debug()
C. browser()
D. stop()
Solution
Step 1: Identify purpose of traceback()
traceback() shows the call stack, listing functions called before the error.
Step 2: Differentiate from other tools
debug() and browser() help step through code, stop() halts execution but does not show call history.
Final Answer:
traceback() -> Option A
Quick Check:
Call stack after error = traceback() [OK]
Hint: Use traceback() to see error call sequence [OK]
Common Mistakes:
Using debug() to see call stack after error
Confusing browser() with traceback()
Expecting stop() to show call history
5. You want to debug a complex function calcStats that calls other functions internally. Which approach helps you pause execution at any line inside calcStats and inspect variables interactively?
hard
A. Use browser() inside calcStats at desired lines
B. Use debug(calcStats) only once before calling
C. Use traceback() after running calcStats
D. Use stop() to halt execution at errors
Solution
Step 1: Understand browser() usage
Inserting browser() pauses execution at that line and lets you inspect variables interactively.
Step 2: Compare with debug() and traceback()
debug() steps through entire function but cannot pause at arbitrary lines; traceback() only shows call stack after error.
Step 3: Recognize stop() role
stop() halts execution with an error but does not allow interactive inspection.
Final Answer:
Use browser() inside calcStats at desired lines -> Option A
Quick Check:
Pause anywhere interactively = browser() [OK]
Hint: Insert browser() where you want to pause and inspect [OK]
Common Mistakes:
Relying only on debug() to pause anywhere
Using traceback() before error occurs
Expecting stop() to allow variable inspection
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.