Мутировать вектор внутри цепочки труб - PullRequest
1 голос
/ 06 февраля 2020

Я бы хотел вычесть 1 из вектора в цепочке труб. Например, mtcars$mpg.

x <- mtcars
# I don't want to do this:
x %>% mutate(mpg = mpg - 1)

Я ищу что-то вроде этого:

x$mpg %>% mutate(. := .-1)

Если то, что я написал там, не ясно во втором блоке, я пытаясь написать: «возьмите вектор mpg, затем измените его на mpg - 1»

Возможно ли это?

1 Ответ

2 голосов
/ 06 февраля 2020

mutate/summarise и другие функции Tidyverse ожидают data.frame как .data. Поскольку мы извлекаем значения столбца, либо воспользуйтесь вспомогательной функцией magrittr subtract

library(magrittr)
x$mpg %>%
     subtract(1)

, либо заблокируйте код в {}, а затем обновите столбец

x$mpg %>%
      {. -1} -> x$mpg

Или используйте составной оператор присваивания (%<>%) для обновления столбца

head(x$mpg)
#[1] 21.0 21.0 22.8 21.4 18.7 18.1

x$mpg %<>%
          {.- 1}
head(x$mpg)
#[1] 20.0 20.0 21.8 20.4 17.7 17.1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...