我有以下建议:
df <- tibble(
x = c(5, 5),
Column_1 = c(0.5, 0.5),
Column_2 = c(0.75, 0.75))
我想创建两个新列,它们分别是列x与Column_1和x与Column_2的乘积。这两个列应命名为ABC_1和ABC_2。
我尝试了以下代码:
df <- mutate(df,
across(starts_with("Column_"),
function(y) y * x,
.names = paste0("ABC", gsub("Column_", "", "{.col}"))
))
但是,这会产生下表:
| X射线|栏_1|列_2| ABC列_1| ABC列_2|
| - -|- -|- -|- -|- -|
| 五个|0.5分|零点七五|二点五|三点七五|
| 五个|0.5分|零点七五|二点五|三点七五|
生成的列现在命名为ABCColumn_1和ABCColumn_2。不知何故,使用gsub创建子字符串不起作用。我希望的输出是:
| X射线|栏_1|列_2| ABC_1语言|ABC_2系列|
| - -|- -|- -|- -|- -|
| 五个|0.5分|零点七五|二点五|三点七五|
| 五个|0.5分|零点七五|二点五|三点七五|
有什么想法我可以优雅地解决这个问题吗?在现实中,列数是可变的,所以我不能硬编码1和2到我的脚本。
编辑:对不起,我的通用列名选择得不好。我选择了一个不同的列名,以表明旧列名和新列名不应该以任何方式相关,除了数字。
2条答案
按热度按时间2ic8powd1#
across()
的.names
参数中使用的粘附字符串计算调用,以便您可以执行以下操作:或者在胶串中使用
sub()
:bgtovc5b2#