Browse Source

dotted guide for geom_dumbbell

tags/v0.4.0
boB Rudis 7 years ago
parent
commit
2f3cf41989
  1. 1
      NEWS
  2. 48
      R/geom_dumbbell.R
  3. 29
      README.Rmd
  4. 59
      README.md
  5. BIN
      README_figs/README-dumbbell-1.png
  6. BIN
      README_figs/README-dumbbell2-1.png
  7. 5
      man/geom_dumbbell.Rd

1
NEWS

@ -2,6 +2,7 @@
===================== =====================
* Fixed `coord_proj()` * Fixed `coord_proj()`
* Removed pokemon colors (et al) * Removed pokemon colors (et al)
* Added dotted-gridline guide for `geom_dumbbell()`
0.3.0 0.3.0
===================== =====================

48
R/geom_dumbbell.R

@ -18,6 +18,8 @@
#' @param point.colour.l the colour of the left point #' @param point.colour.l the colour of the left point
#' @param point.size.r the size of the right point #' @param point.size.r the size of the right point
#' @param point.colour.r the colour of the right point #' @param point.colour.r the colour of the right point
#' @param dot_guide if \code{TRUE}, a leading dotted line will be placed before the left-most dumbbell point
#' @param dot_guide_size,dot_guide_color singe-value aesthetics for \code{dot_guide}
#' @inheritParams ggplot2::layer #' @inheritParams ggplot2::layer
#' @export #' @export
#' @examples #' @examples
@ -29,6 +31,8 @@
geom_dumbbell <- function(mapping = NULL, data = NULL, ..., geom_dumbbell <- function(mapping = NULL, data = NULL, ...,
point.colour.l = NULL, point.size.l = NULL, point.colour.l = NULL, point.size.l = NULL,
point.colour.r = NULL, point.size.r = NULL, point.colour.r = NULL, point.size.r = NULL,
dot_guide = FALSE, dot_guide_size = NULL,
dot_guide_color = NULL,
na.rm = FALSE, show.legend = NA, inherit.aes = TRUE) { na.rm = FALSE, show.legend = NA, inherit.aes = TRUE) {
layer( layer(
@ -45,6 +49,9 @@ geom_dumbbell <- function(mapping = NULL, data = NULL, ...,
point.size.l = point.size.l, point.size.l = point.size.l,
point.colour.r = point.colour.r, point.colour.r = point.colour.r,
point.size.r = point.size.r, point.size.r = point.size.r,
dot_guide = dot_guide,
dot_guide_size = dot_guide_size,
dot_guide_color = dot_guide_color,
... ...
) )
) )
@ -58,7 +65,8 @@ GeomDumbbell <- ggproto("GeomDumbbell", Geom,
required_aes = c("x", "xend", "y"), required_aes = c("x", "xend", "y"),
non_missing_aes = c("size", "shape", non_missing_aes = c("size", "shape",
"point.colour.l", "point.size.l", "point.colour.l", "point.size.l",
"point.colour.r", "point.size.r"), "point.colour.r", "point.size.r",
"dot_guide", "dot_guide_size", "dot_guide_color"),
default_aes = aes( default_aes = aes(
shape = 19, colour = "black", size = 0.5, fill = NA, shape = 19, colour = "black", size = 0.5, fill = NA,
alpha = NA, stroke = 0.5 alpha = NA, stroke = 0.5
@ -70,22 +78,44 @@ GeomDumbbell <- ggproto("GeomDumbbell", Geom,
draw_group = function(data, panel_scales, coord, draw_group = function(data, panel_scales, coord,
point.colour.l = NULL, point.size.l = NULL, point.colour.l = NULL, point.size.l = NULL,
point.colour.r = NULL, point.size.r = NULL) { point.colour.r = NULL, point.size.r = NULL,
dot_guide = NULL, dot_guide_size = NULL,
dot_guide_color = NULL) {
points.l <- data points.l <- data
points.l$colour <- point.colour.l %||% data$colour points.l$colour <- point.colour.l %||% data$colour
points.l$size <- point.size.l %||% (data$size * 2.5) points.l$size <- point.size.l %||% (data$size * 1.2)
points.r <- data points.r <- data
points.r$x <- points.r$xend points.r$x <- points.r$xend
points.r$colour <- point.colour.r %||% data$colour points.r$colour <- point.colour.r %||% data$colour
points.r$size <- point.size.r %||% (data$size * 2.5) points.r$size <- point.size.r %||% (data$size * 1.25)
gList( dot_df <- data
ggplot2::GeomSegment$draw_panel(data, panel_scales, coord), dot_df$xend <- ifelse(data$xend < data$x, data$xend, data$x)
ggplot2::GeomPoint$draw_panel(points.l, panel_scales, coord), dot_df$x <- -Inf
ggplot2::GeomPoint$draw_panel(points.r, panel_scales, coord) dot_df$linetype <- "11"
) dot_df$size <- dot_guide_size %||% (data$size * 0.5)
dot_df$color <- dot_guide_color %||% "#5b5b5b"
if (is.null(dot_guide) | !dot_guide) {
gList(
ggplot2::GeomSegment$draw_panel(data, panel_scales, coord),
ggplot2::GeomPoint$draw_panel(points.l, panel_scales, coord),
ggplot2::GeomPoint$draw_panel(points.r, panel_scales, coord)
)
} else {
gList(
ggplot2::GeomSegment$draw_panel(dot_df, panel_scales, coord),
ggplot2::GeomSegment$draw_panel(data, panel_scales, coord),
ggplot2::GeomPoint$draw_panel(points.l, panel_scales, coord),
ggplot2::GeomPoint$draw_panel(points.r, panel_scales, coord)
)
}
}, },

29
README.Rmd

@ -5,13 +5,9 @@ output: rmarkdown::github_document
<!-- README.md is generated from README.Rmd. Please edit that file --> <!-- README.md is generated from README.Rmd. Please edit that file -->
```{r, echo = FALSE} ```{r, echo = FALSE}
knitr::opts_chunk$set( knitr::opts_chunk$set(collapse=TRUE, comment="##", fig.retina=2, fig.path = "README_figs/README-")
collapse = TRUE,
comment = "#>",
fig.retina = 2,
fig.path = "README_figs/README-"
)
``` ```
[![Project Status: Active - The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/0.1.0/active.svg)](http://www.repostatus.org/#active) [![Project Status: Active - The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/0.1.0/active.svg)](http://www.repostatus.org/#active)
[![Travis-CI Build Status](https://travis-ci.org/hrbrmstr/ggalt.svg?branch=master)](https://travis-ci.org/hrbrmstr/ggalt) [![Travis-CI Build Status](https://travis-ci.org/hrbrmstr/ggalt.svg?branch=master)](https://travis-ci.org/hrbrmstr/ggalt)
[![CRAN_Status_Badge](http://www.r-pkg.org/badges/version/ggalt)](http://cran.r-project.org/web/packages/ggalt) [![CRAN_Status_Badge](http://www.r-pkg.org/badges/version/ggalt)](http://cran.r-project.org/web/packages/ggalt)
@ -23,7 +19,7 @@ A compendium of 'geoms', 'coords', 'stats', scales and fonts for 'ggplot2', incl
The following functions are implemented: The following functions are implemented:
- `coord_proj` : Like `coord_map`, only better 😜 - `coord_proj` : Like `coord_map`, only better 😜 (prbly shld use this with `geom_cartogram` as `geom_map`'s new defaults are ugh)
- `geom_xspline` : Connect control points/observations with an X-spline - `geom_xspline` : Connect control points/observations with an X-spline
- `stat_xspline` : Connect control points/observations with an X-spline - `stat_xspline` : Connect control points/observations with an X-spline
- `geom_bkde` : Display a smooth density estimate (uses `KernSmooth::bkde`) - `geom_bkde` : Display a smooth density estimate (uses `KernSmooth::bkde`)
@ -32,12 +28,11 @@ The following functions are implemented:
- `stat_bkde2d` : Contours from a 2d density estimate. (uses `KernSmooth::bkde2D`) - `stat_bkde2d` : Contours from a 2d density estimate. (uses `KernSmooth::bkde2D`)
- `stat_ash` : Compute and display a univariate averaged shifted histogram (polynomial kernel) (uses `ash::ash1`/`ash::bin1`) - `stat_ash` : Compute and display a univariate averaged shifted histogram (polynomial kernel) (uses `ash::ash1`/`ash::bin1`)
-- `geom_encircle`: Automatically enclose points in a polygon -- `geom_encircle`: Automatically enclose points in a polygon
`scale_color_pokemon` : `byte_format`: + helpers. e.g. turn `10000` into `10 Kb`
- `scale_fill_pokemon` : discrete pokemon scales (data taken from the hard work by the <http://www.pokegraphs.com/>)
- `byte_format`: + helpers. e.g. turn `10000` into `10 Kb`
- `geom_lollipop()`: Dead easy lollipops (horizontal or vertical) - `geom_lollipop()`: Dead easy lollipops (horizontal or vertical)
- `geom_dumbbell()` : Dead easy dumbbell plots - `geom_dumbbell()` : Dead easy dumbbell plots
- `geom_stepribbon()` : Step ribbons - `geom_stepribbon()` : Step ribbons
- plotly integration for a few of the ^^ geoms
### Installation ### Installation
@ -348,6 +343,20 @@ gg <- gg + theme(panel.border=element_blank())
gg gg
``` ```
```{r dumbbell2, message=FALSE, fig.width=7, fig.height=2.5}
library(hrbrthemes)
df <- data.frame(trt=LETTERS[1:5], l=c(20, 40, 10, 30, 50), r=c(70, 50, 30, 60, 80))
ggplot(df, aes(y=trt, x=l, xend=r)) +
geom_dumbbell(size=3, color="#e3e2e1",
point.colour.l = "#5b8124", point.colour.r = "#bad744",
dot_guide=TRUE, dot_guide_size=0.75) +
labs(x=NULL, y=NULL, title="ggplot2 geom_dumbbell with dot guide") +
theme_ipsum_rc(grid="X") +
theme(panel.grid.major.x=element_line(size=0.05))
```
### Code of Conduct ### Code of Conduct
Please note that this project is released with a [Contributor Code of Conduct](CONDUCT.md). Please note that this project is released with a [Contributor Code of Conduct](CONDUCT.md).

59
README.md

@ -8,18 +8,17 @@ A compendium of 'geoms', 'coords', 'stats', scales and fonts for 'ggplot2', incl
The following functions are implemented: The following functions are implemented:
- `coord_proj` : Like `coord_map`, only better 😜 - `coord_proj` : Like `coord_map`, only better 😜 (prbly shld use this with `geom_cartogram` as `geom_map`'s new defaults are ugh)
- `geom_xspline` : Connect control points/observations with an X-spline - `geom_xspline` : Connect control points/observations with an X-spline
- `stat_xspline` : Connect control points/observations with an X-spline - `stat_xspline` : Connect control points/observations with an X-spline
- `geom_bkde` : Display a smooth density estimate (uses `KernSmooth::bkde`) -- `geom_stateface`: Use ProPublica's StateFace font in ggplot2 plots- `stat_bkde` : Display a smooth density estimate (uses `KernSmooth::bkde`) - `geom_bkde` : Display a smooth density estimate (uses `KernSmooth::bkde`) -- `geom_stateface`: Use ProPublica's StateFace font in ggplot2 plots- `stat_bkde` : Display a smooth density estimate (uses `KernSmooth::bkde`)
- `geom_bkde2d` : Contours from a 2d density estimate. (uses `KernSmooth::bkde2D`) - `geom_bkde2d` : Contours from a 2d density estimate. (uses `KernSmooth::bkde2D`)
- `stat_bkde2d` : Contours from a 2d density estimate. (uses `KernSmooth::bkde2D`) - `stat_bkde2d` : Contours from a 2d density estimate. (uses `KernSmooth::bkde2D`)
- `stat_ash` : Compute and display a univariate averaged shifted histogram (polynomial kernel) (uses `ash::ash1`/`ash::bin1`) -- `geom_encircle`: Automatically enclose points in a polygon `scale_color_pokemon` : - `stat_ash` : Compute and display a univariate averaged shifted histogram (polynomial kernel) (uses `ash::ash1`/`ash::bin1`) -- `geom_encircle`: Automatically enclose points in a polygon `byte_format`: + helpers. e.g. turn `10000` into `10 Kb`
- `scale_fill_pokemon` : discrete pokemon scales (data taken from the hard work by the <http://www.pokegraphs.com/>)
- `byte_format`: + helpers. e.g. turn `10000` into `10 Kb`
- `geom_lollipop()`: Dead easy lollipops (horizontal or vertical) - `geom_lollipop()`: Dead easy lollipops (horizontal or vertical)
- `geom_dumbbell()` : Dead easy dumbbell plots - `geom_dumbbell()` : Dead easy dumbbell plots
- `geom_stepribbon()` : Step ribbons - `geom_stepribbon()` : Step ribbons
- plotly integration for a few of the ^^ geoms
### Installation ### Installation
@ -39,7 +38,7 @@ library(ggalt)
# current verison # current verison
packageVersion("ggalt") packageVersion("ggalt")
#> [1] '0.4' ## [1] '0.4.0'
set.seed(1492) set.seed(1492)
dat <- data.frame(x=c(1:10, 1:10, 1:10), dat <- data.frame(x=c(1:10, 1:10, 1:10),
@ -64,7 +63,7 @@ ggplot(dat, aes(x, y, group=group, color=factor(group))) +
geom_point() + geom_point() +
geom_line() + geom_line() +
geom_smooth(se=FALSE, linetype="dashed", size=0.5) geom_smooth(se=FALSE, linetype="dashed", size=0.5)
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x' ## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
``` ```
<img src="README_figs/README-splines-2.png" width="672" /> <img src="README_figs/README-splines-2.png" width="672" />
@ -75,7 +74,7 @@ ggplot(dat, aes(x, y, group=group, color=factor(group))) +
geom_point(color="black") + geom_point(color="black") +
geom_smooth(se=FALSE, linetype="dashed", size=0.5) + geom_smooth(se=FALSE, linetype="dashed", size=0.5) +
geom_xspline(size=0.5) geom_xspline(size=0.5)
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x' ## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
``` ```
<img src="README_figs/README-splines-3.png" width="672" /> <img src="README_figs/README-splines-3.png" width="672" />
@ -86,7 +85,7 @@ ggplot(dat, aes(x, y, group=group, color=factor(group))) +
geom_point(color="black") + geom_point(color="black") +
geom_smooth(se=FALSE, linetype="dashed", size=0.5) + geom_smooth(se=FALSE, linetype="dashed", size=0.5) +
geom_xspline(spline_shape=-0.4, size=0.5) geom_xspline(spline_shape=-0.4, size=0.5)
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x' ## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
``` ```
<img src="README_figs/README-splines-4.png" width="672" /> <img src="README_figs/README-splines-4.png" width="672" />
@ -97,7 +96,7 @@ ggplot(dat, aes(x, y, group=group, color=factor(group))) +
geom_point(color="black") + geom_point(color="black") +
geom_smooth(se=FALSE, linetype="dashed", size=0.5) + geom_smooth(se=FALSE, linetype="dashed", size=0.5) +
geom_xspline(spline_shape=0.4, size=0.5) geom_xspline(spline_shape=0.4, size=0.5)
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x' ## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
``` ```
<img src="README_figs/README-splines-5.png" width="672" /> <img src="README_figs/README-splines-5.png" width="672" />
@ -108,7 +107,7 @@ ggplot(dat, aes(x, y, group=group, color=factor(group))) +
geom_point(color="black") + geom_point(color="black") +
geom_smooth(se=FALSE, linetype="dashed", size=0.5) + geom_smooth(se=FALSE, linetype="dashed", size=0.5) +
geom_xspline(spline_shape=1, size=0.5) geom_xspline(spline_shape=1, size=0.5)
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x' ## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
``` ```
<img src="README_figs/README-splines-6.png" width="672" /> <img src="README_figs/README-splines-6.png" width="672" />
@ -119,7 +118,7 @@ ggplot(dat, aes(x, y, group=group, color=factor(group))) +
geom_point(color="black") + geom_point(color="black") +
geom_smooth(se=FALSE, linetype="dashed", size=0.5) + geom_smooth(se=FALSE, linetype="dashed", size=0.5) +
geom_xspline(spline_shape=0, size=0.5) geom_xspline(spline_shape=0, size=0.5)
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x' ## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
``` ```
<img src="README_figs/README-splines-7.png" width="672" /> <img src="README_figs/README-splines-7.png" width="672" />
@ -130,7 +129,7 @@ ggplot(dat, aes(x, y, group=group, color=factor(group))) +
geom_point(color="black") + geom_point(color="black") +
geom_smooth(se=FALSE, linetype="dashed", size=0.5) + geom_smooth(se=FALSE, linetype="dashed", size=0.5) +
geom_xspline(spline_shape=-1, size=0.5) geom_xspline(spline_shape=-1, size=0.5)
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x' ## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
``` ```
<img src="README_figs/README-splines-8.png" width="672" /> <img src="README_figs/README-splines-8.png" width="672" />
@ -144,7 +143,7 @@ data(geyser, package="MASS")
ggplot(geyser, aes(x=duration)) + ggplot(geyser, aes(x=duration)) +
stat_bkde(alpha=1/2) stat_bkde(alpha=1/2)
#> Bandwidth not specified. Using '0.14', via KernSmooth::dpik. ## Bandwidth not specified. Using '0.14', via KernSmooth::dpik.
``` ```
<img src="README_figs/README-bkde_ash-1.png" width="672" /> <img src="README_figs/README-bkde_ash-1.png" width="672" />
@ -153,7 +152,7 @@ ggplot(geyser, aes(x=duration)) +
ggplot(geyser, aes(x=duration)) + ggplot(geyser, aes(x=duration)) +
geom_bkde(alpha=1/2) geom_bkde(alpha=1/2)
#> Bandwidth not specified. Using '0.14', via KernSmooth::dpik. ## Bandwidth not specified. Using '0.14', via KernSmooth::dpik.
``` ```
<img src="README_figs/README-bkde_ash-2.png" width="672" /> <img src="README_figs/README-bkde_ash-2.png" width="672" />
@ -181,8 +180,8 @@ dat <- data.frame(cond = factor(rep(c("A","B"), each=200)),
rating = c(rnorm(200),rnorm(200, mean=.8))) rating = c(rnorm(200),rnorm(200, mean=.8)))
ggplot(dat, aes(x=rating, color=cond)) + geom_bkde(fill="#00000000") ggplot(dat, aes(x=rating, color=cond)) + geom_bkde(fill="#00000000")
#> Bandwidth not specified. Using '0.36', via KernSmooth::dpik. ## Bandwidth not specified. Using '0.36', via KernSmooth::dpik.
#> Bandwidth not specified. Using '0.31', via KernSmooth::dpik. ## Bandwidth not specified. Using '0.31', via KernSmooth::dpik.
``` ```
<img src="README_figs/README-bkde_ash-5.png" width="672" /> <img src="README_figs/README-bkde_ash-5.png" width="672" />
@ -190,8 +189,8 @@ ggplot(dat, aes(x=rating, color=cond)) + geom_bkde(fill="#00000000")
``` r ``` r
ggplot(dat, aes(x=rating, fill=cond)) + geom_bkde(alpha=0.3) ggplot(dat, aes(x=rating, fill=cond)) + geom_bkde(alpha=0.3)
#> Bandwidth not specified. Using '0.36', via KernSmooth::dpik. ## Bandwidth not specified. Using '0.36', via KernSmooth::dpik.
#> Bandwidth not specified. Using '0.31', via KernSmooth::dpik. ## Bandwidth not specified. Using '0.31', via KernSmooth::dpik.
``` ```
<img src="README_figs/README-bkde_ash-6.png" width="672" /> <img src="README_figs/README-bkde_ash-6.png" width="672" />
@ -206,8 +205,8 @@ grid.arrange(ggplot(dat, aes(x)) + stat_ash(),
ggplot(dat, aes(x)) + stat_bkde(), ggplot(dat, aes(x)) + stat_bkde(),
ggplot(dat, aes(x)) + stat_density(), ggplot(dat, aes(x)) + stat_density(),
nrow=3) nrow=3)
#> Estimate nonzero outside interval ab. ## Estimate nonzero outside interval ab.
#> Bandwidth not specified. Using '0.43', via KernSmooth::dpik. ## Bandwidth not specified. Using '0.43', via KernSmooth::dpik.
``` ```
<img src="README_figs/README-bkde_ash-7.png" width="672" /> <img src="README_figs/README-bkde_ash-7.png" width="672" />
@ -225,8 +224,8 @@ ggplot(dat, aes(x)) +
theme_bw() + theme_bw() +
theme(panel.grid=element_blank()) + theme(panel.grid=element_blank()) +
theme(panel.border=element_blank()) theme(panel.border=element_blank())
#> Estimate nonzero outside interval ab. ## Estimate nonzero outside interval ab.
#> Bandwidth not specified. Using '0.43', via KernSmooth::dpik. ## Bandwidth not specified. Using '0.43', via KernSmooth::dpik.
``` ```
<img src="README_figs/README-bkde_ash-8.png" width="672" /> <img src="README_figs/README-bkde_ash-8.png" width="672" />
@ -471,6 +470,22 @@ gg
<img src="README_figs/README-dumbbell-1.png" width="672" /> <img src="README_figs/README-dumbbell-1.png" width="672" />
``` r
library(hrbrthemes)
df <- data.frame(trt=LETTERS[1:5], l=c(20, 40, 10, 30, 50), r=c(70, 50, 30, 60, 80))
ggplot(df, aes(y=trt, x=l, xend=r)) +
geom_dumbbell(size=3, color="#e3e2e1",
point.colour.l = "#5b8124", point.colour.r = "#bad744",
dot_guide=TRUE, dot_guide_size=0.75) +
labs(x=NULL, y=NULL, title="ggplot2 geom_dumbbell with dot guide") +
theme_ipsum_rc(grid="X") +
theme(panel.grid.major.x=element_line(size=0.05))
```
<img src="README_figs/README-dumbbell2-1.png" width="672" />
### Code of Conduct ### Code of Conduct
Please note that this project is released with a [Contributor Code of Conduct](CONDUCT.md). By participating in this project you agree to abide by its terms. Please note that this project is released with a [Contributor Code of Conduct](CONDUCT.md). By participating in this project you agree to abide by its terms.

BIN
README_figs/README-dumbbell-1.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 107 KiB

BIN
README_figs/README-dumbbell2-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

5
man/geom_dumbbell.Rd

@ -6,6 +6,7 @@
\usage{ \usage{
geom_dumbbell(mapping = NULL, data = NULL, ..., point.colour.l = NULL, geom_dumbbell(mapping = NULL, data = NULL, ..., point.colour.l = NULL,
point.size.l = NULL, point.colour.r = NULL, point.size.r = NULL, point.size.l = NULL, point.colour.r = NULL, point.size.r = NULL,
dot_guide = FALSE, dot_guide_size = NULL, dot_guide_color = NULL,
na.rm = FALSE, show.legend = NA, inherit.aes = TRUE) na.rm = FALSE, show.legend = NA, inherit.aes = TRUE)
} }
\arguments{ \arguments{
@ -41,6 +42,10 @@ to the paired geom/stat.}
\item{point.size.r}{the size of the right point} \item{point.size.r}{the size of the right point}
\item{dot_guide}{if \code{TRUE}, a leading dotted line will be placed before the left-most dumbbell point}
\item{dot_guide_size, dot_guide_color}{singe-value aesthetics for \code{dot_guide}}
\item{na.rm}{If \code{FALSE} (the default), removes missing values with \item{na.rm}{If \code{FALSE} (the default), removes missing values with
a warning. If \code{TRUE} silently removes missing values.} a warning. If \code{TRUE} silently removes missing values.}

Loading…
Cancel
Save