Bird
Raised Fist0
R Programmingprogramming~5 mins

Variable scope (lexical scoping) in R Programming - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is lexical scoping in R?
Lexical scoping means that R looks for a variable's value in the environment where the function was defined, not where it is called.
Click to reveal answer
beginner
In R, where does the interpreter look first when resolving a variable inside a function?
It first looks inside the function's own environment (local environment) for the variable.
Click to reveal answer
intermediate
What happens if a variable is not found in the local environment in R?
R looks in the parent environment, continuing up the chain until it finds the variable or reaches the empty environment.
Click to reveal answer
beginner
Explain the difference between local and global variables in R.
Local variables exist only inside a function and are not visible outside. Global variables exist in the global environment and can be accessed anywhere unless shadowed by local variables.
Click to reveal answer
intermediate
What is the output of this R code?
f <- function() { x <- 10; function() x }

Then calling g <- f() and g()?
The output is 10. The inner function remembers the value of x from the environment where it was created (lexical scoping).
Click to reveal answer
In R, if a variable is not found inside a function, where does R look next?
AIn the parent environment
BIn the function's arguments only
CIn the global environment only
DIt throws an error immediately
What does lexical scoping depend on in R?
AWhere the function is called
BWhere the function is defined
CThe order of function arguments
DThe size of the variable
Which environment contains variables defined inside a function in R?
ALocal environment
BGlobal environment
CParent environment
DSystem environment
What will happen if a variable is not found in any environment in R?
AR uses a default value
BR creates the variable automatically
CR returns NULL
DR throws an error
What is a closure in R related to lexical scoping?
AA function without arguments
BA function that runs faster
CA function that remembers its defining environment
DA function that modifies global variables
Explain how R finds the value of a variable inside a function using lexical scoping.
Think about the chain of environments R checks.
You got /5 concepts.
    Describe the difference between local and global variables in R and how lexical scoping affects their visibility.
    Consider where variables are created and accessed.
    You got /4 concepts.

      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