这是一个概念性问题。
如何在
.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
时,不应该出现不要使用相同名称的警告吗?
大多数时候答案就在文档中。来自
?mutate
由...修改的现有列将始终返回其原始位置。
通过 ... 创建的新列将根据 .before 和 .after 参数放置。