rm(list=ls()) doesn't completely clear the workspace

前端 未结 7 1342
一向
一向 2020-12-08 04:36

This is a very minor issue, but I would like to understand exactly what is going on here.

Say I do the following:

library(RMySQL)
con <- dbConnect         


        
7条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-08 05:00

    attach() does not make copies of x and y in your global environment, it attaches a dataframe to the search path.

    From ?attach:

    The database is not actually attached.  Rather, a new environment
     is created on the search path and the elements of a list
     (including columns of a data frame) or objects in a save file or
     an environment are _copied_ into the new environment.  If you use
     ‘<<-’ or ‘assign’ to assign to an attached database, you only
     alter the attached copy, not the original object.  (Normal
     assignment will place a modified version in the user's workspace:
     see the examples.)  For this reason ‘attach’ can lead to
     confusion.
    

    For example:

    > search()
    [1] ".GlobalEnv"        "package:stats"     "package:graphics" 
    [4] "package:grDevices" "package:utils"     "package:datasets" 
    [7] "package:methods"   "Autoloads"         "package:base"     
    > a <- data.frame(stuff=rnorm(100))
    > search()
    [1] ".GlobalEnv"        "package:stats"     "package:graphics" 
    [4] "package:grDevices" "package:utils"     "package:datasets" 
    [7] "package:methods"   "Autoloads"         "package:base"     
    > attach(a)
    > search()
     [1] ".GlobalEnv"        "a"                 "package:stats"    
     [4] "package:graphics"  "package:grDevices" "package:utils"    
     [7] "package:datasets"  "package:methods"   "Autoloads"        
    [10] "package:base"     
    > rm(list=ls())
    > search()
     [1] ".GlobalEnv"        "a"                 "package:stats"    
     [4] "package:graphics"  "package:grDevices" "package:utils"    
     [7] "package:datasets"  "package:methods"   "Autoloads"        
    [10] "package:base"     
    > stuff
      [1] -0.91436377  0.67397624  0.62891651 -0.99669584  2.07692590 -0.62702302
      [...]
    > detach(a)
    > search()
    [1] ".GlobalEnv"        "package:stats"     "package:graphics" 
    [4] "package:grDevices" "package:utils"     "package:datasets" 
    [7] "package:methods"   "Autoloads"         "package:base"    
    

提交回复
热议问题