> On Nov 2, 2017, at 10:03 AM, Ed Siefker <ebs15...@gmail.com> wrote: > > I don't really understand. I mean, I understand the solution is > print(ggplot(...)). But why is that required in a function and not at > the console?
The REPL design of the interactive console is offered the user as a convenience, but I agree it's somewhat at odds with pure functional principles. > > Shouldn't I be able to rely on what I do at the console working in a > script? Is this inconsistent behavior by design? By design? Yes. Completely by design. Functions are a method of encapsulating intermediate results in a manner that does not interact with the objects that exist outside the function. There are three plotting paradigms: base-graphics, lattice, and ggplot. The latter two are built with grid graphics and a both more functional and object oriented (loosely spoken since they return objects) than base graphics. Base graphics behaves the way you expect. Execution of `lines` or `points` will give you "pen-on-ink" output, actually pixel on device output. > > > > On Thu, Nov 2, 2017 at 11:54 AM, David Winsemius <dwinsem...@comcast.net> > wrote: >> >>> On Nov 2, 2017, at 9:27 AM, Ed Siefker <ebs15...@gmail.com> wrote: >>> >>> I have a function: >>> >>> myplot <- function (X) { >>> d <- plotCounts(dds2, gene=X, intgroup="condition", returnData=TRUE) >>> png(paste("img/", X, ".png", sep="")) >>> ggplot(d, aes(x=condition, y=count, color=condition)) + >>> geom_point(position=position_jitter(w=0.1,h=0)) + >>> scale_y_log10(breaks=c(25,100,400)) + >>> ggtitle(X) + >>> theme(plot.title = element_text(hjust = 0.5)) >>> >>> dev.off() >>> } >>> >>> 'd' is a dataframe >>> >>> count condition >>> E11.5 F20HET BA40_quant 955.9788 E11.5 F20HET >>> E11.5 F20HET BA45_quant 796.2863 E11.5 F20HET >>> E11.5 F20HET BB84_quant 745.0340 E11.5 F20HET >>> E11.5 F9.20DKO YEH3_quant 334.2994 E11.5 F9.20DKO >>> E11.5 F9.20DKO fkm1_quant 313.7307 E11.5 F9.20DKO >>> E11.5 F9.20DKO zzE2_quant 349.3313 E11.5 F9.20DKO >>> >>> If I set X="Etv5" and paste the contents of the function into R, I get >>> 'img/Etv5.png' >>> If I run myplot(X), I get nothing. >>> >>> >>>> X >>> [1] "Etv5" >>>> list.files("img") >>> character(0) >>>> myplot(X) >>> null device >>> 1 >>>> list.files("img") >>> character(0) >>>> d <- plotCounts(dds2, gene=X, intgroup="condition", returnData=TRUE) >>>> png(paste("img/", X, ".png", sep="")) >>>> ggplot(d, aes(x=condition, y=count, color=condition)) + >>> + geom_point(position=position_jitter(w=0.1,h=0)) + >>> + scale_y_log10(breaks=c(25,100,400)) + >>> + ggtitle(X) + >>> + theme(plot.title = element_text(hjust = 0.5)) >>>> dev.off() >>> null device >>> 1 >>>> list.files("img") >>> [1] "Etv5.png" >>> >>> Why doesn't my function work? >> >> `ggplot` creates an object. You need to print it when used inside a >> function. Inside a function (in a more restricted environment) there is no >> parse-eval-print-loop. >> >> >>> >>> ______________________________________________ >>> 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. >> >> David Winsemius >> Alameda, CA, USA >> >> 'Any technology distinguishable from magic is insufficiently advanced.' >> -Gehm's Corollary to Clarke's Third Law >> >> >> >> >> > > ______________________________________________ > 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. David Winsemius Alameda, CA, USA 'Any technology distinguishable from magic is insufficiently advanced.' -Gehm's Corollary to Clarke's Third Law ______________________________________________ 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.