Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6767681
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T14:58:50+00:00 2026-05-26T14:58:50+00:00

Can somebody please explain what happens when an expression is evaluated in system.time ?

  • 0

Can somebody please explain what happens when an expression is evaluated in system.time? In particular, why are any variables that are declared in the expr argument visible in the global environment?

Here is a pared-down version of the innards of system.time that does nothing other than evaluating the expression that is passed to the function:

st <- function(expr){
  expr
}

st(aa <- 1)
aa
[1] 1

Clearly the effect of this is that it creates the variable aa in the global environment. This baffles me, since I thought that assigning a variable inside a function makes it local in scope.

What happens here?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-26T14:58:51+00:00Added an answer on May 26, 2026 at 2:58 pm

    It is because supplied arguments are evaluated in the evaluation frame of the calling function (as described in Section 4.3.3 of the R Language Definition document).

    The expression wrapped by the user in system.time() is a supplied argument which gets matched positionally to expr. Then, when expr‘s evaluation is forced in the body of system.time, it is evaluated in the evaluation frame of the calling function. If system.time() was called from the .GlobalEnv, that is where any assignments that are a part of expr will take place.

    EDIT:

    Here’s an example showing that expr is evaluated in the global environment if it is a supplied (but not a default) argument.

    st2 <- function(expr = newVar <- 33){
       expr
    }
    
    # Using the default argument -- eval and assignment 
    # within evaluation frame of the function. 
    st2()
    newVar
    Error: object 'newVar' not found
    
    # Using a supplied argument -- eval and assignment
    # within the calling function's evaluation frame (here .GlobalEnv)
    st2(newVar <- 44)
    newVar
    # [1] 44
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Hi can somebody please explain what are the URL's that we can see at
Can somebody please explain how to use macros in x86 assembly coding
Can somebody please explain how to find out if full text search is enabled
Can somebody please explain what does this warning mean: undefined reference to 'WinMain@16' ?
Can somebody please explain why a while statement like while (ch != '\n' ||
can somebody please explain what does it mean : passing arg 1 of 'free'
Can somebody please explain this IE7 bug to me? It occurs in Standards and
can somebody please explain, I have a program on C, can I convert it
can somebody please explain what is the difference between freeglut.h and glut.h
can somebody please explain is it possible to convert this snippet of the code

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.