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

在R中如何对data.frame的各列分别减去不同的指定数值

实现方法

下面给出两种常用的实现方案,都可以得到你需要的结果:

方法1:基础R实现(无需加载第三方包)

使用sweep函数可以直接按列批量执行减法操作,代码如下:

# 选中需要处理的列
target_cols <- c("v1", "v2", "v3")
# 按列减去对应数值
result <- sweep(Data[, target_cols], MARGIN = 2, STATS = unlist(subtrate), FUN = "-")

代码说明:

  • MARGIN = 2 指定按列进行操作
  • unlist(subtrate) 把单行的subtrate数据框转为向量,对应每列的待减数值
  • FUN = "-" 指定操作为减法

方法2:dplyr实现(tidyverse生态常用写法)

如果平时用tidyverse系列工具,可以用across按列匹配处理,代码可读性更高:

library(dplyr)
result <- Data %>%
  # 选中需要处理的数值列,剔除Time列
  select(v1:v3) %>%
  # 每列减去subtrate中对应列的数值
  mutate(across(everything(), ~ .x - subtrate[[cur_column()]]))

两种方法运行后得到的result都和你给出的预期结果完全一致。

内容的提问来源于stack exchange,提问作者Vinicius B. de S. Moreira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:06:04