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

在R DataFrame中自动拼接所有列生成新列的简洁实现方法

简洁实现方案

以下几种方法无需显式写出每个列名,能高效处理任意数量的目标列:

方法1:dplyr rowwise + c_across(推荐,dplyr风格)

利用rowwise()按行处理,c_across(-model_id)选中除model_id外的所有列,再用paste()完成拼接:

want = model_spec %>%
  rowwise() %>%
  mutate(model_formula = paste0('y ~ ', paste(c_across(-model_id), collapse = '+'))) %>%
  ungroup() %>%
  select(model_id, model_formula)

如果列名有规律(比如都是var开头),也可以用c_across(starts_with("var"))这类选择器精准筛选目标列。

方法2:基础R apply函数

用apply()按行遍历目标列,直接完成拼接操作:

want = model_spec %>%
  mutate(model_formula = paste0('y ~ ', apply(select(., -model_id), 1, paste, collapse = '+'))) %>%
  select(model_id, model_formula)

这个方法不需要额外启用行处理模式,代码更紧凑。

方法3:tidyr unite + 字符串处理

先通过unite把目标列合并成临时字符串列,再补充前缀得到最终结果:

library(tidyr)

want = model_spec %>%
  unite(col = "temp", -model_id, sep = "+", remove = FALSE) %>%
  mutate(model_formula = paste0('y ~ ', temp)) %>%
  select(model_id, model_formula) %>%
  select(-temp) # 可选,移除临时列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:25:14