-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Closed
Labels
bugan unexpected problem or unintended behavioran unexpected problem or unintended behavior
Milestone
Description
As a simple example, let's say you have a normalising constant in one dataframe column and you need to normalise many other columns. mutate_at seems like it would be convenient to do this, but you can't refer to other columns in the dataframe apart from . cleanly.
Example:
library(tidyverse)
## Works but hardcoding dataset name feels lame.
iris %>%
mutate_at(vars(starts_with("Sepal")),
~ . / iris$Petal.Width) %>%
head()
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 1 25.5 17.50 1.4 0.2 setosa
#> 2 24.5 15.00 1.4 0.2 setosa
#> 3 23.5 16.00 1.3 0.2 setosa
#> 4 23.0 15.50 1.5 0.2 setosa
#> 5 25.0 18.00 1.4 0.2 setosa
#> 6 13.5 9.75 1.7 0.4 setosa
## Fails
iris %>%
mutate_at(vars(starts_with("Sepal")),
~ . / Petal.Width) %>%
head()
#> Error in mutate_impl(.data, dots): Evaluation error: object 'Petal.Width' not found.
## Fails differently
iris %>%
mutate_at(vars(starts_with("Sepal")),
~ . / .data$Petal.Width) %>%
head()
#> Error in mutate_impl(.data, dots): Column `Sepal.Length` must be length 150 (the number of rows) or one, not 0Created on 2019-02-15 by the reprex package (v0.2.1)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugan unexpected problem or unintended behavioran unexpected problem or unintended behavior