You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从名称列表向tibble批量添加多列?

批量给tibble添加指定列名的列

这里有几种简洁的一行代码实现方式,完全匹配你的需求:

假设你要添加的列名列表是cols_to_add <- c("c", "d", "e"),默认值设为0,具体方法如下:

方法1:add_column()配合非标准求值

library(tidyverse)

df <- tibble(a = 1:3, b = 3:1)
cols_to_add <- c("c", "d", "e")

df <- df %>% add_column(!!!set_names(rep(0, length(cols_to_add)), cols_to_add))

set_names会把重复的默认值和列名绑定成命名列表,!!!负责把这个列表展开成add_column()的多个参数,一次性完成批量添加。

方法2:mutate() + across()(更贴合tidyverse风格)

df <- df %>% mutate(across(all_of(cols_to_add), ~0))

all_of()用来引用字符向量里的列名,~0指定新列的默认值,你也可以把它换成任意需要的计算逻辑或固定值。

方法3:bind_cols()合并新列

df <- df %>% bind_cols(tibble(!!!set_names(rep(0, length(cols_to_add)), cols_to_add)))

先创建包含所有新列的tibble,再和原数据框合并,效果和第一种方法一致。

执行任意一种方法后,都会得到如下结果:

# A tibble: 3 × 5
      a     b     c     d     e
  <int> <int> <dbl> <dbl> <dbl>
1     1     3     0     0     0
2     2     2     0     0     0
3     3     1     0     0     0

内容的提问来源于stack exchange,提问作者Angelo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 05:52:47