如何用dplyr中mutate结合across为数据框添加不存在的列
用mutate和across为数据框添加缺失列
假设你已有列名向量:
cols <- c('grade', 'score', 'status')
以及目标数据框(示例数据框如下):
df <- data.frame(grade = c(1, 2, 3), name = c("Alice", "Bob", "Charlie"))
实现步骤
- 先找出数据框中不存在于cols向量的列名:
missing_cols <- setdiff(cols, names(df))
setdiff()会返回cols里有但df列名中没有的元素,比如示例中会得到c("score", "status")。
- 用
mutate()结合across()添加这些缺失列并赋值为NA:
library(dplyr) df <- df %>% mutate(across(all_of(missing_cols), ~ NA))
all_of(missing_cols)用来正确引用字符向量中的列名,避免语法问题;~ NA表示对每个缺失列都赋值为NA,最终这些新列会被添加到数据框中。
执行后,df就会包含grade、name、score、status四列,其中score和status的所有值都是NA。
内容的提问来源于stack exchange,提问作者learner
相关产品推荐
相关产品推荐

