For some reason that I don't remember, an R core member once told me
that they prefer x <- y <- NULL to utils::globalVariables(c("x","y")) -
although I have also encountered problems with that strategy in edge cases.
Here's an example from StackOverflow from today where for some reason
I don't understand, evaluation of function arguments interacts with
non-standard/lazy evaluation within a dplyr function such that 'foo'
works while 'x$foo' doesn't ... don't know if it's a similar case.
https://stackoverflow.com/questions/67218258/getting-error-error-in-usemethodfilter-no-applicable-method-for-filter/67220198#67220198
On 4/22/21 5:19 PM, Kevin R. Coombes wrote:
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.sav...@univ-fcomte.fr <mailto:paul.sav...@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.coom...@gmail.com
<mailto:kevin.r.coom...@gmail.com>>
À: "r-package-devel" <r-package-devel@r-project.org
<mailto:r-package-devel@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@r-project.org
<mailto:R-package-devel@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@r-project.org
<mailto:R-package-devel@r-project.org> mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel
<https://stat.ethz.ch/mailman/listinfo/r-package-devel>
[[alternative HTML version deleted]]
______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel
______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel