Bird
Raised Fist0
R Programmingprogramming~10 mins

Variable scope (lexical scoping) in R Programming - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to assign the value 10 to variable x.

R Programming
x <- [1]
Drag options to blanks, or click blank then click option'
ATRUE
B"x"
C10
DNULL
Attempts:
3 left
💡 Hint
Common Mistakes
Putting quotes around 10, which makes it a string instead of a number.
Using TRUE or NULL instead of a number.
2fill in blank
medium

Complete the function to return the value of y defined outside the function.

R Programming
y <- 5
my_func <- function() {
  return([1])
}
Drag options to blanks, or click blank then click option'
Ay
Bx
Cz
D5
Attempts:
3 left
💡 Hint
Common Mistakes
Returning a variable not defined outside the function.
Returning a literal number instead of the variable.
3fill in blank
hard

Fix the error by completing the code to access the outer variable a inside the function.

R Programming
a <- 3
outer_func <- function() {
  inner_func <- function() {
    return([1])
  }
  inner_func()
}
Drag options to blanks, or click blank then click option'
Aa
Binner_func
C3
Db
Attempts:
3 left
💡 Hint
Common Mistakes
Using a variable not defined in any scope.
Returning the function name instead of a variable.
4fill in blank
hard

Complete the function to compute compound interest using the outer 'rate' variable.

R Programming
rate <- 1.05
compound_interest <- function(principal) {
  return([1])
}
Drag options to blanks, or click blank then click option'
Aprincipal * 1.05
Bprincipal * rate
Cprincipal + rate
Drate * principal + 1
Attempts:
3 left
💡 Hint
Common Mistakes
Hardcoding the rate value like 1.05.
Adding instead of multiplying.
5fill in blank
hard

Complete the function to use the outer 'exponent' despite the local shadowing variable.

R Programming
exponent <- 3
power_calc <- function(base) {
  exponent_local <- 2
  return([1])
}
Drag options to blanks, or click blank then click option'
Aexponent ^ base
Bbase ^ exponent_local
Cbase ** 3
Dbase ^ exponent
Attempts:
3 left
💡 Hint
Common Mistakes
Using the local shadowed variable exponent_local.
Hardcoding the exponent value.

Practice

(1/5)
1. What does lexical scoping mean in R programming?
easy
A. Variables are looked up where the function is defined, not where it is called.
B. Variables are always global and accessible everywhere.
C. Variables inside functions overwrite global variables automatically.
D. Variables are found only inside loops.

Solution

  1. Step 1: Understand lexical scoping definition

    Lexical scoping means R looks for variables in the environment where the function was written, not where it is called.
  2. Step 2: Compare options with definition

    Only Variables are looked up where the function is defined, not where it is called. correctly describes this behavior; others are incorrect or unrelated.
  3. Final Answer:

    Variables are looked up where the function is defined, not where it is called. -> Option A
  4. Quick Check:

    Lexical scoping = lookup where defined [OK]
Hint: Remember: R finds variables where code is written, not run [OK]
Common Mistakes:
  • Thinking variables are always global
  • Confusing lexical with dynamic scoping
  • Assuming function variables overwrite globals automatically
2. Which of the following is the correct way to define a local variable x inside a function in R?
easy
A. global x = 5
B. x <- 5 inside the function body
C. var x = 5
D. x := 5

Solution

  1. Step 1: Recall R syntax for variable assignment

    In R, variables are assigned using the arrow operator (<-), especially inside functions.
  2. Step 2: Check each option

    x <- 5 inside the function body uses correct R syntax. Options B, C, and D use syntax from other languages or invalid forms.
  3. Final Answer:

    x <- 5 inside the function body -> Option B
  4. Quick Check:

    Use <- for assignment in R [OK]
Hint: Use <- to assign variables inside functions in R [OK]
Common Mistakes:
  • Using global or var keywords (not R syntax)
  • Using := which is not valid in base R
  • Confusing R with other languages like JavaScript or Python
3. What is the output of this R code?
y <- 10
f <- function() {
  y <- 5
  return(y)
}
f()
medium
A. 10
B. NULL
C. 5
D. Error

Solution

  1. Step 1: Identify variable scopes

    Global y is 10, but inside function f, y is locally assigned 5.
  2. Step 2: Determine returned value

    The function returns the local y, which is 5, not the global y.
  3. Final Answer:

    5 -> Option C
  4. Quick Check:

    Local variable y inside function = 5 [OK]
Hint: Inside function, local variables override globals [OK]
Common Mistakes:
  • Assuming function returns global y (10)
  • Thinking function returns NULL by default
  • Expecting an error due to variable shadowing
4. Consider this R code:
z <- 3
f <- function() {
  z <- z + 1
  return(z)
}
f()

What is the result?
medium
A. 4
B. 3
C. NULL
D. Error: object 'z' not found

Solution

  1. Step 1: Analyze variable usage inside function

    Inside f, z <- z + 1 tries to read local z before assignment, but local z doesn't exist yet.
  2. Step 2: Understand lexical scoping rules

    R looks for z in local scope first; it is not found, so it does not use global z for the right side in assignment.
  3. Step 3: Resulting error

    This causes an error: object 'z' not found.
  4. Final Answer:

    Error: object 'z' not found -> Option D
  5. Quick Check:

    Local variable used before assignment causes error [OK]
Hint: Local vars must exist before use; else error occurs [OK]
Common Mistakes:
  • Assuming global z is used automatically
  • Expecting output 4 without error
  • Ignoring variable initialization order
5. Given the code below, what will g() return?
a <- 2
f <- function() {
  a <- 3
  h <- function() {
    a <- 4
    return(a)
  }
  return(h())
}
g <- function() {
  return(f())
}
g()
hard
A. 4
B. 3
C. Error
D. 2

Solution

  1. Step 1: Trace nested function variable scopes

    Global a = 2, f() sets local a = 3, h() inside f sets local a = 4.
  2. Step 2: Determine return value of g()

    g() calls f(), which calls h(), which returns its local a = 4.
  3. Final Answer:

    4 -> Option A
  4. Quick Check:

    Innermost local variable a = 4 returned [OK]
Hint: Innermost function's local variable shadows outer ones [OK]
Common Mistakes:
  • Returning outer function's a (3) instead of inner (4)
  • Returning global a (2)
  • Expecting an error due to nested functions
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard