[R] R function stopped working
Boris Steipe
boris.steipe at utoronto.ca
Tue Apr 4 16:19:51 CEST 2017
I discourage the use of print() for debugging.
Put a browser() statement into your loop and when execution takes you to the debugger interface, examine your variables and expressions one by one.
B.
> On Apr 4, 2017, at 10:09 AM, DANIEL PRECIADO <danprec at hotmail.com> wrote:
>
> To your first comment: Yes, the function used to work, and the loop inside it still does (as indicated in my first email). I wouldn't bother asking otherwise.
> To your second, no, specifying the environment in the ls() call doesn't help, the problem persist.
>
>
> On Tue, 2017-04-04 at 15:26 +0200, peter dalgaard wrote:
>
> Given the following little experiment
>
>
>
> foobar <- 1
> f <- function() ls()
> f()
>
>
> character(0)
>
>
> f <- function(x) ls()
> f(2)
>
>
> [1] "x"
>
>
>
>
>
>
> ... I am pretty sure that your code _never_ actually worked.
>
> It probably helps if you tell ls() which environment to list, as in:
>
>
>
> f <- function() ls(.GlobalEnv)
> f()
>
>
> [1] "f" "foobar"
>
>
>
>
> On 4 Apr 2017, at 12:27 , DANIEL PRECIADO <danprec at hotmail.com<mailto:danprec at hotmail.com>> wrote:
>
> Thanks, but printing doesn't work within the function either. (i.e, no
> result or output, or error). Also, like I said, the loop is working
> fine on its own (so the path, name, filename, and all other variables
> called from the function exist, are available and are recognized just
> fine). It just doesn't do anything (anymore) if the loop is inside a
> function.
>
>
> On Tue, 2017-04-04 at 11:21 +0200, peter dalgaard wrote:
>
>
> How about inserting print() statements on the output of "ls()" and
> the value of "filename". In particular, is the value of Plots_path
> the same as last week?
>
> -pd
>
>
>
>
> On 4 Apr 2017, at 10:50 , DANIEL PRECIADO <danprec at hotmail.com<mailto:danprec at hotmail.com>>
> wrote:
>
> The following function is supposed to search the workspace and save
> plots (i.e. listing all objects in the workspace named "Figs",
> which
> are all ggplot2 plots, and saving them as png files)
>
> SaveFigs <- function()
> {
> for (i in ls(pattern="_Figs_"))
> {
> filename = paste(Plots_Path, i, ".png", sep="")
> png(filename)
> print(eval(as.name(i)))
> dev.off()
> }
> }
>
>
> It was working perfectly until some days ago, but now nothing
> happens
> when the function is called. No error, no output, no result, no
> files,
> nothing at all. Completely useless.
>
> If I run the for loop inside alone, without the function, it works
> perfectly and produces the expected result (png files in the
> defined
> folder). But running it as a function doesn't do anything at all.
>
> Can anyone explain why did this function simply and suddenly
> stopped
> working?
>
> (using R version 3.3.3 on an ubuntu 16.10, if that is of any help)
> ______________________________________________
> R-help at r-project.org<mailto:R-help at 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-g
> uide.html
> and provide commented, minimal, self-contained, reproducible code.
>
>
>
>
>
>
>
>
>
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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.
More information about the R-help
mailing list