首页 > 解决方案 > (!!!) 在 R 中是什么意思以及如何重命名一组变量

问题描述

我看到了这样的代码:

df %>% rename(!!! setNames(map$VarName, map$StdName))

这里是什么!!!意思?还有,为什么我们一起使用renamesetNames?如果 df 的变量比 map$VarName 少,这是让这些代码运行的一种方法吗?现在它会弹出错误消息Error: Can't rename columns that don't exist.

有什么建议吗?非常感谢。

标签: r

解决方案


正如错误所暗示的,key/val 数据集中不存在一些列名。使用当前代码,一种选择是使用“df”中常见的列对“map”数据集进行“子集/过滤”

map1 <- subset(map, VarName %in% colnames(df))

然后!!!在命名向量上使用带有拼接符号 ( )的子集数据集

library(dplyr)
df %>%
    rename(!!! setNames(map1$VarName, map1$StdName))

代替!!!,我们也可以rename_with 使用

df %>%
    rename_with(~ map1$StdName, all_of(map1$VarName))

推荐阅读