Hi, I asked this question on SO but got no answers: http://stackoverflow.com/questions/17310825/r-promise-already-under-evaluation
I understand that you are probably sick and tired of answering the same question again, but I am still getting the error discussed in several other questions: >>> promise already under evaluation: recursive default argument reference or >>> earlier problems? even though I did follow the "cumbersome" advice of prepending ".": --8<---------------cut here---------------start------------->8--- show.large.objects.threshold <- 100000 show.large.objects.exclude <- c("closure") show.large.objects <- function (.envir = sys.frame(), threshold = show.large.objects.threshold, exclude = show.large.objects.exclude) { for (n in print(ls(.envir, all.names = TRUE))) tryCatch({ o <- get(n,envir = .envir) s <- object.size(o) if (s > threshold && !(typeof(o) %in% exclude)) { cat(n,": ") print(s,units="auto") } }, error = function(e) { cat("n=",n,"\n"); print(e) }) } show.large.objects.stack <- function (threshold = show.large.objects.threshold, skip.levels = 1,# do not examine the last level - this function exclude = show.large.objects.exclude) { for (level in 1:(sys.nframe()-skip.levels)) { cat("*** show.large.objects.stack(",level,") ") print(sys.call(level)) show.large.objects(.envir = sys.frame(level)) } } --8<---------------cut here---------------end--------------->8--- but I still get errors: --8<---------------cut here---------------start------------->8--- > f <- function () { c <- 1:1e7; d <- 1:1e6; > print(system.time(show.large.objects.stack())) } > f() *** show.large.objects.stack( 1 ) f() [1] "c" "d" c : 38.1 Mb d : 3.8 Mb *** show.large.objects.stack( 2 ) print(system.time(show.large.objects.stack())) [1] "..." "x" n= ... <simpleError in get(n, envir = .envir): argument "..." is missing, with no default> n= x <simpleError in get(n, envir = .envir): promise already under evaluation: recursive default argument reference or earlier problems?> *** show.large.objects.stack( 3 ) system.time(show.large.objects.stack()) [1] "expr" "gcFirst" "ppt" "time" n= expr <simpleError in get(n, envir = .envir): promise already under evaluation: recursive default argument reference or earlier problems?> user system elapsed 0 (0.00ms) 0 (0.00ms) 0.002 (2.00ms) --8<---------------cut here---------------end--------------->8--- So, what am I still doing wrong? Do I really need the . in .envir? Why do I get the [[argument "..." is missing, with no default]] error? Why do I get the [[promise already under evaluation]] error? What is the right way to pass threshold and exclude from show.large.objects.stack to show.large.objects? Thanks! PS. I would prefer an answer on SO, but please feel free to reply using any venue you like and I will copy your explanation to the other venues. -- Sam Steingold (http://sds.podval.org/) on Ubuntu 13.04 (raring) X 11.0.11303000 http://www.childpsy.net/ http://iris.org.il http://mideasttruth.com http://honestreporting.com http://openvotingconsortium.org Linux - find out what you've been missing while you've been rebooting Windows. ______________________________________________ R-help@r-project.org mailing list 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.