On 30/05/2015 10:35 AM, Munawar Cheema wrote: > I am puzzled by the following seemingly contradictory calls to the function > identical. Below is a minimal example, that reproduces them: > >> sessionInfo() > R version 3.2.0 (2015-04-16) > Platform: x86_64-apple-darwin13.4.0 (64-bit) > Running under: OS X 10.9.5 (Mavericks) > > locale: > [1] C > > attached base packages: > [1] stats graphics grDevices utils datasets grid methods > [8] base > > loaded via a namespace (and not attached): > [1] compiler_3.2.0 tools_3.2.0 memoise_0.2.1 digest_0.6.8 >> readLines("tmp.R") > [1] "if (identical(function(x)1,function(x)1)) cat(\"Identical!\\n\") > else cat(\"Not Identical!\\n\")" >> sys.source("tmp.R", envir=new.env(parent=baseenv())) > Identical! >> if (identical(function(x)1,function(x)1)) cat("Identical!\n") else cat("Not >> Identical!\n") > Not Identical! > > > > Can anyone explain why I get a false value from the command line but true if I > use sys.source? >
sys.source has keep.source = getOption("keep.source.pkgs"), which defaults to FALSE. Normal evaluation uses getOption("keep.source"), which defaults to TRUE. You can see the difference if you save the functions, and use str(), e.g. f <- function(x)1 g <- function(x)1 str(f) str(g) Duncan Murdoch ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.