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

如何将R语言across函数的输出追加到输入数据中?

在R中使用across将处理结果追加到原数据框

要保留原数据列,同时将across的处理结果作为新列追加,核心是利用mutate结合across的.names参数指定新列命名规则,避免覆盖原列。

示例实现

基于你提供的代码,修改后如下:

library(tidyverse)

gdf <- 
  tibble(g = c(1, 1, 2, 3), v1 = 10:13, v2 = 20:23) %>%
  group_by(g)

set.seed(1)
n <- rnorm(1)

# 追加处理后的新列,保留原v1、v2
gdf %>% 
  mutate(across(v1:v2, ~ .x + n, .names = "{.col}_adj"))

执行后输出:

# A tibble: 4 × 5
# Groups:   g [3]
      g    v1    v2 v1_adj v2_adj
  <dbl> <int> <int>  <dbl>  <dbl>
1     1    10    20   9.37   19.4
2     1    11    21  10.4    20.4
3     2    12    22  11.4    21.4
4     3    13    23  12.4    22.4

关键说明

  • .names = "{.col}_adj" 是核心:{.col}会自动替换为原列名(比如v1、v2),最终生成v1_adj、v2_adj这类新列。
  • 你可以自定义命名规则,比如.names = "{.col}_plus_n"会生成v1_plus_n、v2_plus_n,根据需求调整即可。
  • 如果列数不多,也可以手动逐个命名新列,但across在处理大量列时更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 00:32:16