首页 > 解决方案 > 改变管道链中的向量

问题描述

我想从管道链中的向量中减去 1。例如,mtcars$mpg

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

我正在寻找这样的东西:

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

如果我在第二个块中写的内容不清楚,我正在尝试写,“取 mpg 矢量然后将其变异为 mpg - 1”

这可能吗?

标签: rdplyr

解决方案


mutate/summarise和其他 tidyverse 函数需要 a data.frameas .data。当我们提取列值时,要么使用magrittr辅助函数subtract

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

或者阻塞a中的代码,{}然后更新列

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

推荐阅读