在 dplyr::mutate() 中使用 .keep 和 .before 覆盖同名的列名

问题描述 投票:0回答:1

这是一个概念性问题。

如何在

.keep
中组合这两个参数
.before
mutate()
,同时覆盖同名的列名:

示例(mtcars数据集):

我们将

carb
mpg
相乘,然后使用
.keep="unused"
仅保留计算出的
carb
,并使用
.before=3
将碳水化合物移动到位置2:

library(dplyr)

mtcars %>%
  mutate(carb = carb * mpg, .keep = "unused", .before = 3)

carb
仍然保持在最后的位置。并且没有错误。为什么?

相比之下,使用新的列名称它可以工作:

mtcars %>%
  mutate(carb_new = carb * mpg, .keep = "unused", .before = 3)

如何深入幕后发现“问题”发生在哪里?在 mutate 中使用

.keep
时,不应该出现不要使用相同名称的警告吗?

r dplyr mutate
1个回答
0
投票

大多数时候答案就在文档中。来自

?mutate

由...修改的现有列将始终返回其原始位置。

通过 ... 创建的新列将根据 .before 和 .after 参数放置。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.