[R-pkg-devel] Using ggplot2 within another package
Thanks.
Obviously, long. long ago, (in a galaxy not far enough away), Paul's
suggestion of using "aes_string" was the correct one, since "aes" uses
non-standard evaluation. (And to quote somebody from an R fortune
cookie, "The problem with non-standard evaluation is that it is
non-standard.") But teh documentation at the end oft he link provided by
Robert explivityl tells you not to do that, since "aes_string is
deprecated".? And reading more carefully into the manual page for
aes_string, one does indeed find the statement that the function is
"soft deprecated". I'm not sure what that means, other than someone on
the development team doesn't like it.
Instead, the vignette says you should
?? importFrom("rlang", ".data")
in your NAMESPACE, and write
?? ggplot(myData, aes(x = .data$myX, y = .data$myY))
And now my dinosaur question: That looks like using one non-standard
hack to cover up the problems with another non-standard hack. Why the
heck? is that any better for the developer than writing
?? ggplot(myData, aes(x = myData$myX, y = myData$myY))
or using Dirk Eddelbuettel's suggestion of calling utils::globalVariables ??
It's time to tell those kids to get off of my lawn.
? Kevin
On 4/22/2021 4:45 PM, Robert M. Flight wrote:
Kevin, This vignette from ggplot2 itself gives the "officially recommended" ways to avoid the warnings from R CMD check https://ggplot2.tidyverse.org/articles/ggplot2-in-packages.html <https://ggplot2.tidyverse.org/articles/ggplot2-in-packages.html> Cheers, -Robert On Thu, Apr 22, 2021 at 4:39 PM Paul SAVARY <paul.savary at univ-fcomte.fr <mailto:paul.savary at univ-fcomte.fr>> wrote: Hi Kevin, I was faced to the same problem and I used 'aes_string()' instead of 'aes()'. You can then just write the name of the columns containing the data to plot as character strings. Example: myPlot <- function(myData, ...) { ? ? # get ready ? ? ggplot(myData, aes_string(x = "myX", y = "myY")) + ? ? ? ?# add my decorations ? ? ? ?theme_bw() } It is probably already the case for your function but you need to include #' @import ggplot2 in your function preamble (if I am not wrong). Kind regards Paul ----- Mail original ----- De: "Kevin R. Coombes" <kevin.r.coombes at gmail.com <mailto:kevin.r.coombes at gmail.com>> ?: "r-package-devel" <r-package-devel at r-project.org <mailto:r-package-devel at r-project.org>> Envoy?: Jeudi 22 Avril 2021 22:28:55 Objet: [R-pkg-devel] Using ggplot2 within another package Hi, I'm trying to help clean up an R package for someone else to submit to CRAN. He has used ggplot2 to implement a plotting function for the kinds of things that his packages generates. His plotting routine basically looks like (after changing names to protect the innocent): myPlot <- fucntion(myData, ...) { ??? # get ready ??? ggplot(myData, aes(x = myX, y = myY)) + ?????? # add my decorations ?????? theme_bw() } Of course, "R CMD check --as-cran" complains that there is no global binding for "myX" or "myY" since they are columns defined in the data.frame "myData". What is the best way to work around this issue? Of course, dinosaurs like myself might be tempted to suggest just using plain old "plot", so I don't need to see those suggestions. Do I just ignore the usual ggplot conventions and write "myData$myX" inside "aes"? in order to appease the CRAN checker? Or is there some tidy-er way to solve this problem? Thanks, ?? Kevin
______________________________________________
R-package-devel at r-project.org
<mailto:R-package-devel at r-project.org> mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel
<https://stat.ethz.ch/mailman/listinfo/r-package-devel>
______________________________________________
R-package-devel at r-project.org
<mailto:R-package-devel at r-project.org> mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel
<https://stat.ethz.ch/mailman/listinfo/r-package-devel>