【发布时间】:2020-06-27 06:14:02
【问题描述】:
我想操作几个列来创建新列,其名称是正在操作的列名称的变体。
dplyr 1.0.0 的 cross() 函数似乎是完成这项工作的工具,但 .names 参数似乎功能有限。这是我想做的:
tmp <- iris %>%
mutate(across(starts_with('Sepal'),
~ .x - Petal.Length,
.names = gsub('Sepal', '', "{col}")))
但是 gsub 函数不起作用。我可以通过以下方式解决这个问题:
tmp <- iris %>%
mutate(across(starts_with('Sepal'),
~ .x - Petal.Length,
.names = "mod_{col}"))
names(tmp) <- gsub("mod_Sepal", "mod_", names(tmp))
但这需要更多代码并且更难跟踪。我在这里遗漏了什么吗?有没有更简单的方法来设置新的列名?
【问题讨论】: